zoukankan      html  css  js  c++  java
  • 设计模式—策略模式

    策略模式属于对象的行为模式。每一个策略都有一个共同的接口,从而使得它们可以相互替换。

    我理解的策略模式其实本质就是Java的多态思想:用父类型的引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为。

    这个模式涉及到三个角色:

      ●  环境(Context)角色:持有一个Strategy的引用。

      ●  抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。

      ●  具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。

    源代码

      环境角色类

    复制代码
    public class Context {
        //持有一个具体策略的对象
        private Strategy strategy;
        /**
         * 构造函数,传入一个具体策略对象
         * @param strategy    具体策略对象
         */
        public Context(Strategy strategy){
            this.strategy = strategy;
        }
        /**
         * 策略方法
         */
        public void contextInterface(){
            
            strategy.strategyInterface();
        }
        
    }
    复制代码

      抽象策略类

    复制代码
    public interface Strategy {
        /**
         * 策略方法
         */
        public void strategyInterface();
    }
    复制代码

      具体策略类

    复制代码
    public class ConcreteStrategyA implements Strategy {
    
        @Override
        public void strategyInterface() {
            //相关的业务
        }
    
    }
    复制代码
    复制代码
    public class ConcreteStrategyB implements Strategy {
    
        @Override
        public void strategyInterface() {
            //相关的业务
        }
    
    }
    复制代码
    复制代码
    public class ConcreteStrategyC implements Strategy {
    
        @Override
        public void strategyInterface() {
            //相关的业务
        }
    
    }
    复制代码

    摘自:《JAVA与模式》之策略模式

  • 相关阅读:
    博客园
    未释放的已删除文件
    ssh连接缓慢
    剑指 Offer 38. 字符串的排列
    剑指 Offer 37. 序列化二叉树
    剑指 Offer 50. 第一个只出现一次的字符
    剑指 Offer 36. 二叉搜索树与双向链表
    剑指 Offer 35. 复杂链表的复制
    剑指 Offer 34. 二叉树中和为某一值的路径
    剑指 Offer 33. 二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/6877366.html
Copyright © 2011-2022 走看看