09 2019 档案
摘要:1. 定义 (1)高层模块不应依赖于低层模块,两者都应该依赖于抽象。(2)抽象不应该依赖于细节,细节应该依赖于抽象。 为什么是“倒置”这个词? 这是由于许多传统的软件开发方法,比如结构化分析和设计,总是倾向于创建一些高层依赖于低层模块、策略依赖于细节的软件结构。实际上这些方法的目的之一就是要定义程序
阅读全文
摘要:OCP背后的主要机制是抽象和多态。在静态类型语言中,比如C++和Java,支持抽象和多态的关键机制之一是继承。正是使用了继承,才可以创建实现其基类中抽象方法的派生类。是什么设计规则在支配着这种特殊的继承用法呢?最佳的继承层次的特征又是什么呢?怎样的情况会使我们创建的类层次结构掉进不符合OCP的陷阱中
阅读全文
摘要:怎样的升级才能面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本呢?开放-封闭原则(The Open-Closed Principle, OCP)为我们提供了指引。软件实体(类、模块、函数等)应该是可以扩展的,但是不可修改的。如果程序中一处改动就会产生连锁反应,导致一
阅读全文
摘要:内聚性:一个模块的组成元素之间的功能相关性。就一个类而言,应该仅有一个引起它变化的原因。当需求变化时,该变化会反映为类的职责的变化,如果一个类承担了多于一个的职责,那么引起它变化的原因就会有多个。如果一个类承担的职责过多,就等于把这些职责耦合在一起。一个职责的变化可能会削弱或抑制这个类完成其他职责的
阅读全文