HIT-软件构造4-5章:
代码的可理解性就是代码的可读性,易懂性低的源代码易出错并且难以维护。
名称越长,越具有描述性,名称越长,效率越低
可复用性的软构方法:
为什么复用软件:1.成本有效性与及时性 2.可生成可靠的软件 3.标准化
面向复用开发:可复用组件的开发成本高于特定代价物的成本。这种额外的可复用性增强成本应该是一个组织而不是一个项目,通用组件的空间利用率可能较低,执行时间可能比特定的较长。
基于复用开发:必须开发和维护用于体系结构,设计文档和代码的组件。
reuse morphology(复用形态学)
设计模式,基于组件的开发,应用程序框架,旧系统包装,面向服务的系统,应用产品线,COTS整合,可配置的垂直应用,程序库,程序生成器,面向方面的软件开发。
代码重用的类型:白盒复用,黑盒复用
模块级复用:类/接口:
类是代码复用的原子单元:封装有助于复用。
复用一个类的过程:delegation(委托)
委托:是当一个对象依赖另一个对象来实现其功能的某个子集
e.g sorter->comparator
显示委托:将发送对象传递给接受对象
隐式委托:由语言的成员查找规则(?)
委托的类型:composition/aggregation association dependency
association:类对象之间一个永久的关联,运行一个对象实例调用另一个对象代表它本身进行操作
dependency :一个对象需要另一个对象的临时关系
composition/aggregation:一个类有另一个类为变量或实例
eg :person 与 heart(心脏对人来说是必须的) composition
eg:courseclass 与 student(学生对于课堂来说是非必须的) aggregation
库级复用:API/包
系统级复用:Framework
Framework 适用于包含抽象和具体类的集合以及每个类之间的接口的子系统设计。
Framework 也可以用扩展他们的技术来进行分类
1.白盒框架 2.黑盒框架
1.通过集成和动态绑定实现可扩展性,通过继承框架基类并重写预定义的钩子方法来扩展现有功能,通常使用诸如模板方法模式来覆盖钩子方法
2.通过为可插入框架的组件定义接口来实现可扩展性,通过定义符合特定接口的组件来重用现有功能,这些组件通过委托和框架集成
Library :一组提供可重用功能的类和方法(API)
Framework:可定制到应用程序中的可重复使用的代码(Framework调用客户端代码)
whiteboxframework 通过子类化和重写方法进行扩展,通过设计模式:模板方法——子类具有主要方法,但对框架进行控制
Blackboxframework 通过实现插件接口进行扩展,通过设计模式:策略,观察这插件加载 插件并对框架进行控制
对复用的设计模式:结构模式,行为模式
结构模式:
Adapter :
adaptee:是旧方法(已经存在)
ITarget:是要实现的接口
adaptar:是实现接口的新方法,调用旧的办法(2种类型 继承或委托)
Decorator
装饰者以递归的方式工作,同时使用子类型和委派
Component 组件接口定义操作或装饰器可以执行的功能。
ConcreteComponent 该类是可以动态添加要素的起始对象。 您将首先创建该对象并为其添加功能。
Decorator类是一个抽象类,是所有装饰器的父类。 虽然它实现了Component接口来定义操作,但它还包含一个指向要装饰的对象的受保护变量组件。 组件变量只是在构造函数中分配的。
Concrete decorator 是可以添加特征的实际装饰类
Facada 外观模式
行为模式:
Stategy pattern:
Template Method:
templatemethod:在父类声明一个通用逻辑
Iteator pattern