我们一起来读书吧 关注:140贴子:2,117
  • 0回复贴,共1

《架构整洁之道》第7-14章

只看楼主收藏回复

第三部分 设计原则
SOLID原则指导软件中层结构的构建,帮助我们定义软件架构中的组件和模块。
SRP:任何一个软件模块都应该只对某一类行为者负责,有且只有一个需要被改变的理由。
把不同行为者所依赖的代码放到一起,容易影响到未知的逻辑。
而负责任的程序员如果想弄清楚所有的未知,就会大大增加自己的工作,降低了效率。
OCP:一个设计良好的计算机系统应该在不需要修改的前提下就可以轻易被扩展。
好的软件架构设计师会努力将旧代码需要修改的量降至最小,甚至为0.
LSP:如果想用可替换的组件来构建软件系统,这些组件就必须遵守同一个约定,使组件在不需要额外处理的前提下相互替换。
正方形/长方形问题是一个著名的违反LSP的设计案例:正方形不应该是长方形的子类,不能互相替换!
因为长方形的宽和高可以分别修改,而正方形必须同时修改。
一旦违背了可替换性,该系统架构就不得不为此增添大量复杂的应对机制。
ISP:任何层次的软件设计都不应依赖不需要的东西,这会带来意料之外的麻烦。
DIP:高层策略性的代码不应该依赖实现底层细节的代码,应该多引用抽象类型;底层代码应该依赖高层策略性代码。
为了不依赖具体类,对象的创建过程也应该受到严格限制,通常使用抽象工厂。
不要在具体实现类上创建衍生类:继承关系是所有一切源码依赖关系中最强的、最难被修改的,所以我们应该格外小心使用继承。
不要覆盖包含具体实现的函数:调用包含具体实现的函数通常意味着引入了源代码级别的依赖,即使覆盖了,也无法消除其中的依赖。


IP属地:北京1楼2022-12-02 18:48回复