摘要:
一个类应仅有一个引起它变化的原因.内聚性.每个Responsibility都是变化的一个轴线.当需求变化时,该变化会反映为类的职责的变化当一个类耦合了多个职责时,一个职责的变化会消弱或抑制其他职责的能力.这种耦合导致了fragile的设计.职责.A reson for change.一个类负担的N个职责是否应该分开.取决于APP变化的方式.如果程序变化总是导致N个职责同时变化,那么不必.而反之需要解耦这些职责.变化的轴线仅当实际发生时才有意义,在没有征兆时应用SRP或者其他原则都是不明智的.解耦职责后,肯定会有一个kludge杂凑物来耦合这些职责,但是除了main外,都不需要知道它的存在,所以 阅读全文
摘要:
Agility,指以微小增量的方式构建软件.全局视图和软件一起演化.每次迭代中,都使设计尽可能适合于当前系统,而不会花时间去预测未来的需求,更不会试图构建一些基础结构去支撑未来才需要的特性.更关注的是当前的系统.不进行预先设计,不需要成熟的初始设计.而保持设计尽可能的干净,简单.并使用单元测试和验收测试来保证.需求处在不停变化的状态之中,如果设计由于需求变化而退化,那么就不是敏捷的.在实现新需求时,应改进原有设计以让设计对新变化的同类变化具有弹性.而不是设法给设计打补丁.敏捷设计是一个过程,而不是事件.Design,源代码就是设计,而UML图示只是设计的附属物而不是设计本身.设计中的臭味常常是 阅读全文
摘要:
静态视图对应用领域中的概念以及与系统实现有关的内部概念进行建模. 在OOP中,使用Class(广义的)来完成这些任务,所以,类和类的关系组成了静态视图.其亦称为类图. 核心:捕捉对象的结构.关联(asscociation):描述对象之间的链(关系).同一类的不同对象之间可以有关联,称为自反关联.多重性:一个类的多少个实例和另一端的类的实例相连.当多重性大于1时,可以指定关联值得排序和唯一性等说明.关联类:即时类又是关联的类.如果关联类的属性在一组关联对象中是唯一的,那么该属性称为限定符,这种关联称为限定关联(表和数组).限定符:对索引进行建模.用以从一组关联对象中标示出唯一对象的值.分析阶段. 阅读全文