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

  • 相关阅读:
    connect: network is unreachable问题的解决
    Linux图形界面与字符界面切换
    Xshell远程连接Linux服务器出错
    demo-placeholder兼容ie8
    Python设计TFTP客户端
    python hashlib、hmac模块
    python time、datetime、random、os、sys模块
    python 字符串和字典
    ssh远程登录时提示access denied
    指针的指针与指针的引用
  • 原文地址:https://www.cnblogs.com/jesseZh/p/3050926.html
Copyright © 2011-2022 走看看