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