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

  • 相关阅读:
    第三十五篇 os模块、sys模块、json模块、pickle模块
    第三十三篇 包
    <词云图>疾风剑豪-亚索词云图
    <爬虫>常见网址的爬虫整理
    <爬虫>反反爬虫的各种知识
    <爬虫>崔庆才的爬虫课
    <随便写>番茄工作法笔记
    <就业指导>为了找到更好的工作
    <人事面试>人事面试整理
    <面试题>面试题整理(101-200)
  • 原文地址:https://www.cnblogs.com/jesseZh/p/3050926.html
Copyright © 2011-2022 走看看