【问题标题】:How should I avoid the need for multiple class inheritance我应该如何避免需要多类继承
【发布时间】:2014-05-26 14:42:27
【问题描述】:

我碰巧需要另外两个人extend我的班级:

  1. 我的 PDOUser 类提供基本的 PDO 辅助函数,例如 getRowquerymysql_error 等。
  2. 我的Debuggable 类,提供调试方法和错误方法来打印出漂亮的调试和错误消息。

我被告知继承多个类是一种令人困惑的程序编写方式,这就是 PHP 不支持它的原因。

为什么我不敢怀疑更有经验的程序员的建议,我找不到更好地解决我的问题的方法。

我不能将任何类设为静态。 PDOUser 类提供受保护的属性 pdo,也可以从子类访问。 调试器类访问当前类名和方法名以提供有用的调试信息。

我可以让一个辅助类继承另一个,但我认为这也会令人困惑。

【问题讨论】:

    标签: php multiple-inheritance


    【解决方案1】:

    您可以使用组合而不是继承。这将您的对象解耦。 您的新类不需要继承两个类,它可以将它们作为实例保存并使用它们的功能。

    继承与组合:

    【讨论】:

    • 是的,这是个好主意。然而,这让我的代码变得更加冗长。
    • +1 以获得好的答案。另一种可能是使用traits
    • 而且更好:).. 继承被过度使用,如果你真的不需要它,请避免它。您可以创建一个适配器类,它可以在重用多个类的同时公开类似的接口,并且仍然保持解耦。
    • 短语 composition over inheritance 很常见,人们可以搜索它,但您会在答案中添加解释性说明,说明它的实际含义吗?
    • 我添加了两个很好的链接以供进一步阅读。那里通过代码示例进行了深入的解释。
    猜你喜欢
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2010-09-29
    • 2016-12-13
    • 1970-01-01
    • 2020-02-04
    • 2019-02-04
    相关资源
    最近更新 更多