我试图理解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
答案 0 :(得分:1)
它将保留模式而没有接口,但是,您需要了解接口不仅用于强制方法实现,它还用于类型提示。接口在类中强制执行其合同以确保类具有这些方法。