《UML和模式应用》中描述了GRASP设计原则,是面向对象设计方法,强调职责的分配。《敏捷软件开发》则提供了另外一套设计原则,强调通过扩展应对变化。本文将学习的理解进行总结。
软件设计中要解决两个主要问题是:职责划分、和隔离变化。
1. 职责划分是定义类的关键。可以指导的原则有:
1) 单一职责原则;
2) 信息专家原则
3) 创建者原则;
4) 控制器原则;
2. 隔离变化,软件才能获得良好的可维护性、可扩展性。
受保护变化原则、间接性原则、纯虚构原则、多态原则在较高抽象层次上提供了隔离变化的指导原则。
而下面的指导原则更为贴近软件实现层面:
OCP原则描述了一个结构良好的设计应该达到的效果。实现方式是将直接的依赖关系转换为对抽象的依赖,这就是依赖倒置原则。抽象和实现在设计时要遵循李氏替换原则,这是实现依赖倒置原则机制上的保证。
抽象接口是依赖的终止点,在设计时要遵循接口隔离原则。
3. 最后,高内聚、低耦合原则,是裁决设计取舍的最高指导原则。
2012.8.3 by weichsel