现在的位置: 首页 > 综合 > 正文

软件复用的几个重要概念

2013年09月03日 ⁄ 综合 ⁄ 共 628字 ⁄ 字号 评论关闭

类与类型:实现与接口的关系

一个对象的类定义了对象是怎样实现的,但对象的类型只与它的接口有关,接口即对象能响应的请求的集合。

一个对象可以有多个类型(如JAVA中实现多接口,C++中的多继承) ,不同类的对象可以有相同的类型(类的实现不同,但接口相同)。

可复用面向对象设计的原则1:面向对象的设计是对接口编程,而不仅仅是对实现编程。继承是实现的复用,而多态是接口的复用。

继承和组合:两种最常用的复用技术

继承是白箱复用,组合是黑箱复用。

继承在编译时刻定义,因而无法在运行时刻改变这种继承关系。而且在一定程度上,父类对子类揭示了其实现的细节,因而破坏了封装性,子类的实现与父类的实现存在较大的依赖。

组合可以在运行时刻用一个对象来替代另一个相同类型的对象。而且它们之间只能通过接口访问,较好地保证了封装性,所以存在较少的依赖性。组合的缺点是太过间接时难于理解以及低效。继承的优点是可以提供缺省实现,而且使用多态可以重定义这些操作。

可复用面向对象设计的原则2:优先使用对象组合,而不是类继承。

委托是对象组合的特例,它使组合具有与继承同样的复用功能。接受请求的对象将自己传给代理人(或者只传递自己的某些属性),使被委托的操作可以引用接受请求的对象,从而把操作委托给代理人,代理人可以使用静态可重入方法来实现代理,代理人没有继承结构时,甚至可以是静态类或singleton。

参数化类型另一种功能复用技术

参数化类型是指类似于C++中模板的技术,优点是可以改变所用到的类型。

抱歉!评论已关闭.