码迷,mamicode.com
首页 > Web开发 > 详细

PHP设计模式 - 策略模式

时间:2018-06-26 00:42:21      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:客户   public   strategy   highlight   vat   function   handle   cli   nts   

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

<?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

 

PHP设计模式 - 策略模式

标签:客户   public   strategy   highlight   vat   function   handle   cli   nts   

原文地址:https://www.cnblogs.com/taozi32/p/9226796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!