zoukankan      html  css  js  c++  java
  • PHP设计模式

    策略模式主要为了让客户类能够更好地使用某些算法而不需要知道其具体的实现。

    <?php
    interface Strategy { // 抽象策略角色,以接口实现
        public function do_method(); // 算法接口
    }
    
    class ConcreteStrategyA implements Strategy { // 具体策略角色A 
        public function do_method() {
            echo 'do method A';
        }
    }
    
    class ConcreteStrategyB implements Strategy { // 具体策略角色B 
        public function do_method() {
            echo 'do method B';
        }
    }
    
    class ConcreteStrategyC implements Strategy { // 具体策略角色C
        public function do_method() {
            echo 'do method C';
        }
    }
    
    
    class Question{ // 环境角色
        private $_strategy;
    
        public function __construct(Strategy $strategy) {
            $this->_strategy = $strategy;
        } 
        public function handle_question() {
            $this->_strategy->do_method();
        }
    }
    
    // client
    $strategyA = new ConcreteStrategyA();
    $question = new Question($strategyA);
    $question->handle_question();//输出do method A
    
    $strategyB = new ConcreteStrategyB();
    $question = new Question($strategyB);
    $question->handle_question();//输出do method B
    
    $strategyC = new ConcreteStrategyC();
    $question = new Question($strategyC);
    $question->handle_question();//输出do method C
    
  • 相关阅读:
    我太难了
    树状数组模板
    题解 洛谷P1196 【[NOI2002]银河英雄传说】
    poj 2352 & Ural 1028 数星星 题解
    棋盘覆盖 题解
    2015 JSOI冬令营训练 彩色格子 题解
    题解 UVA12716 GCD等于XOR GCD XOR
    第一篇博客
    2019.8.26 小结
    2019.8.24 小结 (关于树状数组,线段树小结)
  • 原文地址:https://www.cnblogs.com/taozi32/p/9226796.html
Copyright © 2011-2022 走看看