我有一些标准课程:
abstract class Parent {}
class Child1 extends Parent {}
class Child2 extends Parent {}
该类Parent
包含两个子类共有的逻辑,但每个子类都有自己的附加逻辑。
对于我的每个客户,这个逻辑都是可以配置的。所以对于任何特定的客户,我可能有:
abstract class ClientParent {}
class ClientChild1 extends ClientParent {}
class ClientChild2 extends ClientParent {}
我遇到的问题是如何将标准类中的逻辑放入这些类中。第一种方法是这样的:
abstract class ClientParent extends Parent {}
好的,现在我在所有特定于客户端的类中都有标准的父逻辑。伟大的。但是子类已经在扩展ClientParent
,所以我们不能为它们做同样的事情。我的“解决方案”就是这样做:
abstract class Parent {}
class Child1 extends ClientParent {}
class Child2 extends ClientParent {}
abstract class ClientParent extends Parent {}
class ClientChild1 extends Child1 {}
class ClientChild2 extends Child2 {}
那里; 现在所有适当的逻辑都被传递下来,每个人都很高兴。除了现在我的标准类耦合到特定的客户端。由于我有很多客户,这显然不好。
我这里有什么?有没有办法单独通过继承来解决这个问题,或者我应该研究更复杂的配置注入策略?
编辑:
我使用的是 PHP 5.3,所以我无法使用特征来解决这个问题。