美文网首页
behavior:策略模式 strategy

behavior:策略模式 strategy

作者: 柳源居士 | 来源:发表于2019-02-11 15:16 被阅读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");
            }
    
    
        }
    }
    

    相关文章

      网友评论

          本文标题:behavior:策略模式 strategy

          本文链接:https://www.haomeiwen.com/subject/xzrirqtx.html