美文网首页
设计模式-策略模式理解

设计模式-策略模式理解

作者: winter_coder | 来源:发表于2020-02-28 11:30 被阅读0次

    同一个行为,用不同的方案可以去完成,这个方案我们可以叫他策略或者规则;通过对方案一个个的独立封装,结构更清晰,而且可以消除条件语句;这种模式就是用来封装算法的,比如在不同时间使用不同的业务规则;

    简单结构:

    1. 一个基础类:可以是抽象类也可以是接口
    2. 多个策略(算法或规则)类:继承上诉基础类
    3. 一个能判断使用哪一个策略的Context类:在这里调用相应的策略对象,这个类;与工厂类比较相似

    举个栗子

    <?php 
    /**
    * abstract class
    */
    abstract class Strategy
    {
        // 算法方法
        abstract public function AlgorithmInterface();    
    }
    /**
    * 算法a
    */
    class ConcreteStrategyA extends Strategy
    {
        public function AlgorithmInterface()
        {
            echo "算法a实现\n";
        }
    }
    /**
    * 算法b
    */
    class ConcreteStrategyB extends Strategy
    {
        public function AlgorithmInterface()
        {
            echo "算法b实现\n";
        }
    }
    /**
    * 算法c
    */
    class ConcreteStrategyC extends Strategy
    {
        public function AlgorithmInterface()
        {
            echo "算法c实现\n";
        }
    }
    /**
    * 上下文context
    */
    class Context
    {
        private $strategy;
        function __construct($strategy)
        {
            $this->strategy = $strategy;
        }
        public function contextInterface()
        {
            $this->strategy->AlgorithmInterface();
        }
    }
    $context = new Context(new ConcreteStrategyA());
    $context->contextInterface();
    $context = new Context(new ConcreteStrategyB());
    $context->contextInterface();
    $context = new Context(new ConcreteStrategyC());
    $context->contextInterface();
    

    相关文章

      网友评论

          本文标题:设计模式-策略模式理解

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