【发布时间】:2016-10-10 11:25:27
【问题描述】:
我正在尝试弄清楚如何正确扩展多个类而无需重复代码。 我有以下课程:
- 基础(方法 A,方法 B)
- 发票:基础(方法 C)
- 装运:基地(方法 D)
我必须调整一些功能而不修改它们。问题是我需要调整的一些方法在基类中。
如果我扩展 Base 类,我将需要复制方法 C 和 D。如果我扩展每个最终类,那么我需要复制对方法 A、B 的更改。
如何在没有多重继承(PHP,不可能)或重复代码的情况下正确执行此操作?
【问题讨论】:
-
这个问题太宽泛了——有太多可能的方法可以做到这一点。 Traits(多重继承)是一种解决方案,将基类分解为需要依赖项,并让两个最终类提供这些依赖项的不同实现可能是更好的选择。没有办法确定有这样的抽象信息可用
-
我不能改变这些类,我只能扩展它们。它们是第三方模块的一部分。
-
那么,trait 可能是最好的选择,但又没有办法真正回答这个问题,所以它可能会因为太宽泛而被关闭
标签: php inheritance design-patterns