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

  • 相关阅读:
    HashMap实现原理
    框架-Spring
    团队开发介绍
    返回一个环状整数数组中最大子数组之和
    软件工程学习体会
    书店促销
    寻找小水王
    梦断代码阅读笔记3
    找水王
    梦断代码阅读笔记2
  • 原文地址:https://www.cnblogs.com/jesseZh/p/3050926.html
Copyright © 2011-2022 走看看