实际中经常用到这样的问题:需要的程序部件和某个已有部件很像,但也略有不同。在这种情况下,一个简单想法就是把原来的代码复制一份,在其基础上修改。但是,一旦复制了代码,引入了重复片段,很多麻烦便会不可避免地出现。维护两份类似代码很麻烦,
- 不但两者都可能需要修改,
- 还要确保维护修改的一致性。
1. 重用的实现:通过继承和扩充
面向对象编程技术为解决这方面的问题提供了支持,允许基于已有基类定义新类(派生类)。这种派生类将:
- (1)继承基类的所有功能(数据域和方法)
- (2)可以定义新的数据域与方法
- (3)还可以重新定义基类里已定义的方法(覆盖已有方法)
2. 复用的度量
- 对于一个函数,如何度量其的复用程度,使用:扇入(fin-in)扇出(fan-out)
- 扇入:函数内部调用(依赖)的其他函数;
- 扇出:当前函数,被多少其他函数所依赖;