理解PHP中的策略模式

理解PHP中的策略模式,php,strategy-pattern,Php,Strategy Pattern,我试图理解PHP中的策略模式。我的示例基于以下教程: 为了理解,我把它删减了一点: interface IStrategy { public function execute(); } class PayCash implements IStrategy { public function execute() { echo "Paying via Cash"; } } class Payment { private $_stra

我试图理解PHP中的策略模式。我的示例基于以下教程:

为了理解,我把它删减了一点:

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做什么?如果没有这个,它也可以工作

    公共职能结构(IST战略$strategy)

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

谢谢


t book

没有接口,它将保持模式,但是,您需要了解,接口不仅用于强制方法实现,还用于类型暗示。接口在类内强制其契约,以确保类具有这些方法。

您基本上是在问什么是接口…!?谢谢,这意味着(IstStrategy$strategy)是因为类型暗示?换句话说,传递的对象必须来自IstStrategy?这对我来说是有意义的。这意味着您希望对象具有方法
execute
,并在代码中实现此逻辑。