• 设计模式—策略模式


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

    我理解的策略模式其实本质就是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与模式》之策略模式

  • 相关阅读:
    【转自己的落谷博客】联通块的dfs
    STL中map的简单使用&常数优化
    转自自己的关于落谷计数器【p1239】的题解
    计算机网络三种模型
    docker的常用的一些配置
    容器整体性理解
    如何在类中定义装饰器?
    如何实现属性可修改的函数装饰器?
    如何定义带参数装饰器?
    如何为被装饰的函数保存元数据?
  • 原文地址:https://www.cnblogs.com/xiangkejin/p/6877366.html
Copyright © 2020-2023  润新知