php - 组合或继承

标签 php inheritance design-patterns composition

interface DoSomething
{
    public function do();
    public function getId();
}

class DoSomethingGood implements DoSomething 
{
    private $dependency;

    private $id;

    public function __construct($id, $dependency)
    {
        $this->dependency = $dependency;
        $this->id = $id;
    }

    public function do()
    {
        if ($this->dependency->isActive()) {
            return true;
        }

        return false;
    }

    public function getId()
    {
        return $this->id;
    }
}

class DoSomethingBad implements DoSomething 
{
    private $id;

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

    public function do()
    {
        return false;
    }

    public function getId() {
        return $this->id;
    }
}

我应该在这里使用组合还是继承会更好?不同之处在于这些类如何实现 do() 方法。第一个类具有所需的依赖项和一些内部逻辑来决定,而另一个类则更简单。

最佳答案

继承是一种语义关系。不是组成。一个常见的错误是使用继承而不是组合来分解代码。

请参阅Liskov substitution principle

关于php - 组合或继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36755186/

相关文章:

java - 如何从 Vaadin UI 建模 POJO? (最佳实践)

C# - 是否可以通过使用接口(interface)来实现单例模式?

php - 应该如何定义这种多对多 doctrine2 关联?

php - 读取网络驱动器上的文件

inheritance - TablePerHierarchy 对于抽象类总是 false?

c# - 我应该使用哪种设计模式来编写持久保存到数据库的 ASP.net 页面?

php - 构建高效的 PHP/MySQL 程序时应遵循哪些经验法则?

php - magento 自定义支付方式重定向

c++ - 意外无法访问的基础(第一个派生类)

java - 改变继承的super方法