软件的可维护性:错误修复、改善性能
- 纠错性
- 适应性
- 完善性
- 预防性
度量方法。。。
原则方法:
- 模块化
- OO设计原则
- OO设计模式
- 基于状态的构造模式
- 表驱动的构造技术
- 基于语法的构造技术
目标:
- 可分解性:功能模块可分解
- 可组合性:多个功能模块可组合完成需求
- 可理解性:各个模块的功能目标是否清晰,可理解
- 可持续性:发生变化(升级,优化)时受影响范围(模块数量)最小
- 出现异常之后的保护:发生异常时受影响范围最小
设计方法:
- 直接映射:调用时直接调用
- 尽可能少的接口:接口清晰
- 尽可能小的接口
- 显式接口
- 信息隐藏
耦合与内聚:模块之间联系越多,耦合度越高(应高内聚,低耦合)
SOLID原则
//着重符号
- 单一责任原则
- 开放-封闭原则
- Liskov替换原则
- 依赖转置原则
- 接口隔离原则
单一责任原则:
每个模块(类)不应因为超过一个原因而发生改变——一个类应只完成一种需求(一类操作)
开放封闭原则:
- 对扩展性(增加、优化功能)开放;
- 对修改封闭:模块自身的代码不应被改变
//着重中着重符号
Liskov替换原则:保证子类能够替换其父类
依赖转置原则:抽象的接口不应依赖具体的实现,具体应该依赖于抽象——具体的实现应依赖于接口
//感觉好厉害的原则啊
接口隔离原则:不能强迫客户端依赖于它们不需要的接口:只提供必需的接口——只提供使用到的接口。
创建者模式:
工厂模式:一个工厂类可用于创建该类型下的一个产品
抽象工厂模式:创建一类产品
//使用抽象工厂创建可以以确定的依赖关系创建一系列的类。
结构模式
代理模式:通过代理对象调用真实对象
对比适配器模式:适配器模式的需求是消除接口的不匹配,代理模式的需求是隔离对复杂对象的访问,降低代价
行为模式
观察者模式:一对多广播
访问者模式:多对一,接口双向委托!!!!
访问者模式与迭代器模式的区别:
迭代器:遍历形式访问集合数据,不暴露其内部表示
访问者模式:在ADT上执行特定操作,但操作不在ADT内部实现而是在visitor内部实现,灵活,不影响ADT
访问者模式与策略模式的区别:
策略模式:不同功能的对应实现在ADT内部,由外部调用
访问者模式:不同操作在ADT外部实现,不影响ADT
正则表达式: Pattern Matcher