看到我对 OOP 真的很陌生,如果我知道得更好,这本来可以避免的。我从我的类库开始了大约一年,并创建了一个类,让我们称之为 Tree,直到现在 Tree 类一直运行良好,它完全符合我的需要。
好吧,现在我注意到我有不同类型的树
我想将树的一些功能移动到它自己的命名空间并为这些其他树创建新的,如何在不破坏已经实现当前树的系统的情况下做到这一点?
有什么方法可以将呼叫从现有的“转发”到新的
看到我对 OOP 真的很陌生,如果我知道得更好,这本来可以避免的。我从我的类库开始了大约一年,并创建了一个类,让我们称之为 Tree,直到现在 Tree 类一直运行良好,它完全符合我的需要。
好吧,现在我注意到我有不同类型的树
我想将树的一些功能移动到它自己的命名空间并为这些其他树创建新的,如何在不破坏已经实现当前树的系统的情况下做到这一点?
有什么方法可以将呼叫从现有的“转发”到新的
根据树的新类型,您可能有一个 SuperTree,它包含一个 Tree 实例来执行它的一些功能,但提供了 SuperTree 独有的附加功能。您可以通过为希望由内部 Tree 实例直接处理的函数编写包装方法来执行调用“转发”。
在某些情况下,SuperTree 从 Tree 继承也可能有意义,但前提是 Tree 在设计时考虑到了这种可扩展性,并且您可能希望传递 SuperTree 来代替 Tree。
可以这样想:
建筑物可能包含钢架并依赖于它,但它不是钢架的一种。
酒店是一种建筑物,因此具有建筑物所具有的东西,例如门窗。
如果您的 Tree 更像是一个更大系统的组件(建筑物的框架),那么您可以通过将其组合为新类的私有成员来扩展其功能。如果它本身是一个丰富的实体,具有明确定义的可扩展点,那么您可以从 Tree 派生新的类,这些新类只是扩展其现有行为。