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

    应用:

            1. 多个类只区别在表现行为不同,在运行时动态选择具体要执行的行为。

            2. 需要在不同情况下使用不同的策略,或者策略还可能在未来用其它方式来实现。

            3. 对客户隐藏具体策略(算法)的实现细节,彼此完全独立。

    优点:

            1. 易于扩展。

            2. 避免多重条件判断

            3. 高内聚,低耦合

    缺点: 需要维护类的数量庞大

    <?php
    interface Strategy {
        function AlgorithmInterface();//默认就是abstract public所以不需要写
    }

    class ConcreteStrategyA implements Strategy {
        public function AlgorithmInterface() {
            echo 'algorithm A';
        }
    }

    class ConcreteStrategyB implements Strategy {
        public function AlgorithmInterface() {
            echo 'algorithm B';
        }
    }

    class ConcreteStrategyC implements Strategy {
        public function AlgorithmInterface() {
            echo 'algorithm C';
        }
    }

    class Context {
        protected $_strategy;

        public 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();
    ?>

  • 相关阅读:
    微软产品中的十一类人员
    C#操作word
    动态代理的介绍和使用
    鼠标屏幕取词技术
    软件语录(来自软件开发的创新思维)
    无句柄的控件spy++查找不到的控件
    代理介绍和动态生成程序集技术
    注释宏定义
    解析字节中的bit数的函数
    Xilinx SDK使用心得之一
  • 原文地址:https://www.cnblogs.com/jesseZh/p/3050926.html
Copyright © 2011-2022 走看看