从类,API,框架三个层面学习如何设计可复用软件实体的具体技术学习心得
软件复用
定义
软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
优点
- 提高生产率
- 减少维护代价
- 提高互操作性
- 支持快速原型
面临的挑战
- 软构件与应用系统之间的差异。
- 软构件要达到一定的数量,才能支持有效的复用,而建立软构件库要有很高的投入和长期的积累。
- 难以发现合适的软构件。
- 基于复用的软件开发方法和软件过程是一个新的研究实践领域,需要一些新的理论、技术及支持环境,目前这方面的研究成果和实践经验都不够充分。
软件复用的关键技术因素
如何设计?
类
继承
面向对象的开发语言中自然少不了继承,有了继承,就可以使子类拥有父类的属性和方法,这也是一种复用,甚至可以说是十分重要的一种复用,子类可以不用将某些方法
委托
在java中类直接调用这个类的static方法,类似c语言中的函数,直接调用就行,这样也是一种类的复用。类似Math.sprt()这种方法。
API
- API应该做一件事,且做得很好
- API应该尽可能小,但不能太小
- Implementation不应该影响
- 记录文档很重要
- 考虑性能后果
- API必须与平台和平共存
- 类的设计:尽量减少可变性,遵循LSP原则
- 方法的设计:不要让客户做任何模块可以做的事情,及时报错
框架
概念
框架是一种软件复用技术,它是一个应用软件系统的部分或整体的可复用设计。框架的具体表现为一组抽象类以及其实例(对象)之间的相互作用方式。它是对于一个软件系统的全部或部分的可复用设计。如一个用户界面框架只提供系统对用户界面的设计,而MacAPP的“Macintosh应用框架”提供了整个应用系统的设计。由定义可知,一个框架是一种面向对象的设计,尽管通常我们看到的框架都是由某种面向对象语言实现的,但从理论上讲它可以不提供面向对象语言的实现。面向对象类库的大力度复用也需要框架,框架提供了类库中被复用组件的上下文关系。
分类
从其功能结构划分,框架可分为白盒(WhiteBox)与黑盒(Black-Box)两种框架。
基于继承的框架被称为白盒框架。所谓白盒,即具备可视性,被继承的父类的内部实现细节对子类而言都是可知的。利用白盒框架,应用开发者通过衍生子类或重写父类的成员方法来开发系统。白盒框架是一个程序骨架,而用户衍生出的子类是这个骨架上的附属品。
应用开发者通过衍生子类或重写父类的成员方法来开发系统。白盒框架是一个程序骨架,而用户衍生出的子类是这个骨架上的附属品。
基于对象构件组装的框架就是黑盒框架。应用开发者通过整理、组装对象来获得系统的实现。用户只须了解构件的外部接口,无须了解内部的具体实现。另外,组装比继承更为灵活,它能动态地改变,而继承只是一个静态编译时的概念。一般情况下,白盒和黑盒框架将同时应用于系统的开发中。