PHP设计模式-策略

2019-02-17  本文已影响0人  木有sky

适用性

策略依照使用而定

代码示例

/**

* 观察者接口

*/

interface StrategyInterface

{

    /**

    * 行为

    * @return void

    */

    public function doSomething();

}

/**

* 观察者实体类示例1

*/

class StrategyExampleOne implements StrategyInterface

{

    /**

    * 行为

    * @return mixed

    */

    public function doSomething()

    {

        echo "你选择了策略1 \n";

    }

}

/**

* 观察者实体类示例2

*/

class StrategyExampleTwo implements StrategyInterface

{

    /**

    * 行为

    * @return mixed

    */

    public function doSomething()

    {

        echo "你选择了策略2 \n";

    }

}

/**

* 实体类

*

* 依赖外部不同策略的实体类

*/

class Substance

{

    /**

    * 策略实例

    * @var object

    */

    private $_strategy;

    /**

    * 构造函数

    * 初始化策略

    *

    * @param Strategy $strategy 策略实例

    */

    public function __construct(StrategyInterface $strategy)

    {

        $this->_strategy = $strategy;

    }

    /**

    * 模拟一个操作

    *

    * @return mixed

    */

    public function someOperation()

    {

        $this->_strategy->doSomething();

    }

}

// 使用策略1

$substanceOne = new Substance(new StrategyExampleOne);

$substanceOne->someOperation();

// 使用策略2

$substanceTwo = new Substance(new StrategyExampleTwo);

$substanceTwo->someOperation();

上一篇下一篇

猜你喜欢

热点阅读