【问题标题】:Extend classes without multi-inheritance or duplicate code扩展类而无需多重继承或重复代码
【发布时间】:2016-10-10 11:25:27
【问题描述】:

我正在尝试弄清楚如何正确扩展多个类而无需重复代码。 我有以下课程:

  • 基础(方法 A,方法 B)
  • 发票:基础(方法 C)
  • 装运:基地(方法 D)

我必须调整一些功能而不修改它们。问题是我需要调整的一些方法在基类中。

如果我扩展 Base 类,我将需要复制方法 C 和 D。如果我扩展每个最终类,那么我需要复制对方法 A、B 的更改。

如何在没有多重继承(PHP,不可能)或重复代码的情况下正确执行此操作?

【问题讨论】:

  • 这个问题太宽泛了——有太多可能的方法可以做到这一点。 Traits(多重继承)是一种解决方案,将基类分解为需要依赖项,并让两个最终类提供这些依赖项的不同实现可能是更好的选择。没有办法确定有这样的抽象信息可用
  • 我不能改变这些类,我只能扩展它们。它们是第三方模块的一部分。
  • 那么,trait 可能是最好的选择,但又没有办法真正回答这个问题,所以它可能会因为太宽泛而被关闭

标签: php inheritance design-patterns


【解决方案1】:

您可以使用trait 来完成此操作。

http://php.net/manual/en/language.oop5.traits.php

【讨论】:

    猜你喜欢
    • 2012-06-02
    • 2020-04-11
    • 2023-03-04
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多