摘要:
第11章 DIP:依赖倒置原则DIP:依赖倒置原则:a.高层模块不应该依赖于低层模块。二者都应该依赖于抽象。b.抽象不应该依赖于细节。细节应该依赖于抽象。11.1 层次化 下图展示了一个简单的层次化方案: 高层的Policy层使用了低层的Mechanism层,而Mechanism层又使用了更细节... 阅读全文
摘要:
第10章 LSP:Liskov替换原则 Liskov替换原则:子类型(subtype)必须能够替换掉它们的基类型(base type)。10.1 违反LSP的情形10.1.1 简单例子 对LSP的违反导致了OCP的违反:struct Point { double x, y;}public enu... 阅读全文
摘要:
第9章 OCP:开放-封闭原则 软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改。9.1 OCP概述 遵循开放-封闭原则设计出的模块具有两个主要特征: (1)对于扩展是开放的(open for extension)。这意味着模块的行为是可以扩展的。当应用的需求改变时,我们可以对模块进... 阅读全文
摘要:
第8章 SRP:单一职责原则 一个类应该只有一个发生变化的原因。8.1 定义职责 在SRP中我们把职责定义为变化的原因。如果你想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。同时,我们很难注意到这一点。我们习惯于以组的形式去考虑职责。违反SRP的示例代码:public inter... 阅读全文
摘要:
第7章 什么是敏捷设计 可以使用许多不同的媒介描述设计,但是设计最终体现为源代码。从根本上讲,源代码就是设计。7.1 设计臭味 如果幸运,你会在项目开始时就想到了系统的清晰图像。系统设计是存在你脑中的一幅至关重要的图像。如果幸运一点,在首次发布时,设计依然保持清楚。 接着,事情开始变糟。软件像... 阅读全文