6.1 Metrics and Construction Principles for Maintainability
软件维护:软件维护同软件开发的各阶段均相关
确定错误位置,测试、修正和文档,测试修改是否正确工作,检查regression faults(回归性错误),记录所有更改。
(2)模块化设计的五大原则
单一责任原则
开放封闭原则
Liskov替换原则
接口隔离原则
依赖转置原则
6.2 Design Patterns for Maintainability
(1)工厂方法模式:当client不知道要创建哪个具体类的实例,或者不想在client代码中指明要具体创建的实例时,用工厂方法。
定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,从而使一个类的实例化延迟到其子类。
(2) 抽象工厂模式:提供接口以创建一组相关/相互依赖的对象,但不需要指明其具体类。
(3)构造器模式:创建复杂对象,其中包含多个组成部分。
(4) 桥接模式
主要特点是把抽象(Abstraction)与行为实现(Implementation)分离开来,从而可以保持各部分的独立性以及应对他们的功能扩展。
要素:
a.抽象类(Abstraction):维护对行为实现(implementation)的引用。
b.Refined Abstraction:Abstraction的子类
c.Implementor:行为实现类接口
d.ConcreteImplementor:Implementor的子类
(5)代理模式
在client和不希望被直接访问(敏感/私密/访问代价高)的对象之间建立防火墙。
(6)组合模式
组合模式依据树形结构来组合对象,用来表示部分以及整体层次。它创建了对象组的树形结构。
(7)Observer
dependent的状态必须与master的状态一致
四种对象:
抽象主体:管理dependents的列表,master状态变化时通知他们
抽象观察者:定义更新dependents的方式
具体主体:管理dependents的信息,master状态变化时通知他们
具体观察者:收到更新状态的信息之后更新状态
(8)Visitor
将数据与操作分离。创建一个外部类(visitor),该类对其他类中的数据进行操作。当操作逻辑改变时,只需改变visitor类的实现。
(9)此外还有Mediator,Command,职责链模式。
6.3 Maintainability-Oriented Construction Techniques
(1)状态模式
目的:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。
意义:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。
(2)备忘录模式
目的:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。
意义:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。
(3)正则表达式:产生式中如果只有终结符和操作符,则称为正则表达式
url ::= ‘http://’ [a-z]+ ‘.’ [a-z]+ ‘/’