Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

策略模式--Strategy

来源: jtlyuan 分享至:


策略模式的目的是定义一系列算法,把它们封装起来,并且使它们可以相互替换.
本模式使得算法可以独立于它的客户而变话.



  1. /**
  2. * 抽象策略(Strategy)角色
  3. * @author Salmon
  4. *
  5. */
  6. public interface Strategy {
  7. public void algorithmInterface();
  8. }
  9. /**
  10. * 具体策略(ConcreteStrategy)角色
  11. * @author Salmon
  12. *
  13. */
  14. public class ConcreteStrategyA implements Strategy {
  15. public void algorithmInterface() {
  16. System.out.println("Called ConcreteStrategyA.algorithmInterface()");
  17. }
  18. }
  19. /**
  20. * 具体策略(ConcreteStrategy)角色
  21. * @author Salmon
  22. *
  23. */
  24. public class ConcreteStrategyB implements Strategy {
  25. public void algorithmInterface() {
  26. System.out.println("Called ConcreteStrategyB.algorithmInterface()");
  27. }
  28. }
  29. /**
  30. * 具体策略(ConcreteStrategy)角色
  31. * @author Salmon
  32. *
  33. */
  34. public class ConcreteStrategyC implements Strategy {
  35. public void algorithmInterface() {
  36. System.out.println("Called ConcreteStrategyC.algorithmInterface()");
  37. }
  38. }
  39. /**
  40. * 环境(Context)角色
  41. * @author Salmon
  42. *
  43. */
  44. public class Context {
  45. Strategy strategy;
  46. public Context(Strategy strategy) {
  47. this.strategy = strategy;
  48. }
  49. public void contextInterface() {
  50. strategy.algorithmInterface();
  51. }
  52. }
  53. /**
  54. * 客户端代码
  55. * @author Salmon
  56. *
  57. */
  58. public class Client {
  59. public static void Main(String[] args) {
  60. Context c = new Context(new ConcreteStrategyA());
  61. c.contextInterface();
  62. Context d = new Context(new ConcreteStrategyB());
  63. d.contextInterface();
  64. Context e = new Context(new ConcreteStrategyC());
  65. e.contextInterface();
  66. }
  67. }
  • 大小: 9.6 KB
  • 查看图片附件

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史