behavior:策略模式 strategy

2019-02-11  本文已影响0人  柳源居士

策略模式:
将一组特定的行为和算法封装成类。该类在不同的环境下,需要有不同的实现算法。也就是针对不同的事物情形,使用不同的方法。
比如网络小说阅读器的书单推广,根据不同性别用户推荐不同的算法。又或者网站根据浏览用户的不同,推送不同的商品。
策略模式的好处:

  1. 将逻辑与算法解耦。
  2. 依赖于接口,可以更好的组织公共代码,并且使用继承的话,可以将公共代码转移到父类里面,降低复杂度。
  3. 传统编码是使用大量的if else 判断,使用策略模式可以有效降低程序的多层选择。
  4. 实现IOC,倒置依赖,控制反转。业务逻辑需要的类由程序判断后初始化并传入,因为具体业务逻辑不需要初始化特定的类。
    缺点:
  5. 程序必须知道所有的算法。
  6. 算法会越来越多。

实现:

  1. 使用策略接口来约束行为。
  2. 新策略继承接口,并完成自身算法。
  3. 调用者根据情况分析使用何种策略。
package strategy;

public interface BookStrategy {

    public String selectBook();

}

package strategy;

public class FemaleBookStrage implements BookStrategy {
    @Override
    public String selectBook() {
        return "言情";
    }
}

package strategy;

public class MaleBookStrategy implements BookStrategy{
    @Override
    public String selectBook() {
        return "玄幻";
    }
}


package strategy;

public class TestStrategy {
    public static void test(String sex){

        switch (sex){
            case "male":
                System.out.println(new MaleBookStrategy().selectBook());
                break;
            case "famale":
                System.out.println(new FemaleBookStrage().selectBook());
                break;
            default:
                System.out.println("we dont know");
        }


    }
}

上一篇下一篇

猜你喜欢

热点阅读