SuperSet到子集类而不破坏遗留代码

时间:2010-12-10 01:08:09

标签: c# oop call forward-compatibility

看到我对OOP真的很新,如果我知道的更好,这本可以避免。 我在我的班级图书馆开始了大约一年的时间,并将其称为“树” 到目前为止,Tree类工作正常,它完全符合我的需要。

好吧,现在我注意到我有不同类型的树

我想将树的一些功能移动到它自己的命名空间并创建新的 对于这些其他树,如何在不破坏已经实现当前树的系统的情况下做到这一点?

我是否可以通过某种方式将现有的呼叫“转发”到新的

1 个答案:

答案 0 :(得分:0)

根据新的树类型,您可能拥有一个包含Tree实例的SuperTree来执行其某些功能,但提供了SuperTree独有的其他功能。您可以通过为内部Tree实例直接处理的函数编写包装器方法来执行“转发”调用。

在某些情况下,SuperTree从Tree下载也可能有意义,但只有在设计时考虑到这种类型的可扩展性,并且您可能希望传递SuperTree来代替树。

这样想:

  • 建筑物可能包含钢架并依赖于它,但它不是一种钢架。

  • 酒店是一种建筑物,因此具有建筑物所具有的东西,如门窗。

如果您的树更像是大型系统的组件(建筑物的框架),那么您可以通过将其组合为新类的私有成员来扩展其功能。如果它是一个自己的丰富实体,具有明确定义的可扩展性点,您可以从Tree下载新类,只需扩展其现有行为。