zoukankan      html  css  js  c++  java
  • 一天学一个模式_第一天:策略模式

    概念:
      策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
         (原文:The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable.
    Strategy lets the algorithm vary independently from clients that use it.)

    抽象策略角色:
           策略类,通常由一个接口或者抽象类实现。

    步骤:
         (①②步比较菜,忽略。有异议者联系!)
          ①首先定义一个策略接口
          ②然后再写出你需要的实现类(这里称为“计谋”)去继承①策略接口。
          ③计谋有了,那还要有锦囊装

           /**
            * @author wonter 
            * <b>描述:</b>计谋有了,那还要有锦囊装 <br>
            * <b>邮件:</b> yiyu1@163.com <br>
            */
           public class Box {
         //①策略接口
         private IStrategy straegy;
         //向锦囊中传入计谋
         //这里类型是策略IStrategy接口,但传入的则是“实现”接口的计谋。
         public Box(IStrategy jimou){
         //改写策略
              this.straegy = jimou;
          }
         //使用计谋
         public void operate(){
              this.straegy.operate();
          }
           }

              ④使用计谋

       /**
        * @author wonter 
        * <b>描述:</b>计谋有了,那还要有锦囊装 <br>
        * <b>邮件:</b> yiyu1@163.com <br>
        */
          public class YunZhao {
        public static void main(String[] args) {
         //将锦囊声明出来
         Context context;
         System.out.println("—— 锦囊妙计一 ——");
         //向锦囊拿出**计谋
         context = new Context(new first());
          //执行计谋
         context.operate(); 
         System.out.println("—— 锦囊妙计二 ——");
         //向锦囊拿出**计谋
         context = new Context(new second());
          //执行计谋
         context.operate(); 
         System.out.println("—— 以下待为扩展 ——");
         System.out.println("——        ... ....       ——");
          }
    好处:
           这就是策略模式,高内聚低耦合的特点也表现出来了。
           还有一个就是扩展性,也就是 OCP原则,只要修改 Context.java 就可以了。
           提供了一种替代继承的方法,而且既保持了继承的优点(代码重用)还比继承更灵活(算法独立,可以任意扩展)。
           避免程序中使用多重条件转移语句,使系统更灵活,并易于扩展。
     /**
        * @author wonter 
        * <b>描述:</b> 一天学一个模式 更新中,请关注我的博客! <br>

        * <b>博客:</b> http://www.cnblogs.com/Javame <br>
        * <b>邮件:</b> yiyu1@163.com <br>
        */

  • 相关阅读:
    就这样吧
    搞了个1.0版本,名字和预定的一样改成OIFaQ了
    算了,总结一下教训
    我刚经历了人生中第一次版本回滚,目前感觉良好,请党和人民放心
    这有点爽的
    我决定出1.0的时候改名叫OIFaQ
    换个SSD把D盘弄飞了
    算是交代一下这三天的空白
    构建之法读书笔记03
    构建之法读书笔记02
  • 原文地址:https://www.cnblogs.com/Javame/p/2153496.html
Copyright © 2011-2022 走看看