理解PHP中的策略模式

时间:2014-03-31 10:17:01

标签: php strategy-pattern

我试图理解PHP中的策略模式。我的示例基于以下教程:http://www.d-mueller.de/blog/5-php-patterns-im-schnelldurchlauf-factory-iterator-observer-singleton-strategy/

为了理解我已经削减了一点:

interface IStrategy 
{
    public function execute();
}

class PayCash implements IStrategy 
{
    public function execute() 
    {
        echo "Paying via Cash";
    }
}

class Payment 
{
    private $_strategy; // new PayCash()

    public function __construct(IStrategy  $strategy) 
    {
        $this->_strategy = $strategy;
    }

    public function execute() 
    {
        $this->_strategy->execute(); // PayCash->execute();
    }
}

//----------------------------------------------

$payment1 = new Payment(new PayCash());
$payment1->execute(); 

问题:

  • (IStrategy 做什么?没有这个也有效。

    公共职能__construct(IStrategy $ strategy)

  • 策略模式是否需要使用接口?如果我正确理解接口的目的是强制类实现一个方法。我也可以在没有接口ISstrategy的情况下写这个,但是它会保留策略模式吗?

谢谢,

t book

1 个答案:

答案 0 :(得分:1)

它将保留模式而没有接口,但是,您需要了解接口不仅用于强制方法实现,它还用于类型提示。接口在类中强制执行其合同以确保类具有这些方法。