接口是否需要指定实现依赖性?

时间:2014-04-26 04:12:46

标签: php oop interface

采用Dice接口的简化示例,该接口将返回1到6之间的随机数和DiceRoller接口,该接口掷骰子特定次数...... DiceRollerInterface如何指定应使用DiceInterface生成劳斯莱斯?或者这不是接口的责任吗?

PHP示例接口:

interface DiceInterface
{
    public function roll();
}

interface DiceRollerInterface
{
    public function roll($times);
}

PHP示例实现

class DiceRoller implements DiceRollerInterface
{
    private $dice;

    public function __construct(DiceInterface $dice)
    {
        $this->dice = $dice;
    }

    public function roll($times)
    {
        $rolled = array();

        for ($i = 0; $i < $times; $i++) {
            $rolled[] =  $this->dice->roll();
        }

        return $rolled;
    }
}

1 个答案:

答案 0 :(得分:0)

接口是抽象的技术实现,即接口定义行为。实现接口的类提供了(或那些,可以是多个)行为的实际实现。

使用接口的目的是仅公开客户端所需的功能,而不暴露类可能具有的所有内容。接口的关注点不是指定实现细节,例如实现者必须使用的其他依赖项。我们正在使用接口,因为我们不希望与特定实现耦合,我们希望代码使用任何实现。

因此,将接口视为合同(是的......),它指定 并且它并不关心如何。唯一对如何感兴趣的是它的实现者,它可以自由地以任何方式实现它。