架构整洁之道
设计原则
SOLID
一. SRP:单一职责原则
定义:任何一个软件模块都应该有且仅有一个被修改的理由或者任何一个软件模块都应该只对一个用户或系统利益相关者负责。综上所述:任何一个软件模块都应该只对某一类行为者负责。
上述的软件模块可以是一组紧密相关的函数和数据结构
二.OCP:开闭原则
定义:设计良好的计算机软件应该易于扩展,同时抗拒修改
三.LSP:里氏替换原则
定义:如果对于每个类型是S的对象o1都存在一个类型为T的对象o2能使操作T类型的程序P在用o2替换o1时行为保持不变,我们就可以将S成为T的子类型。
LSP实际上是一种指导接口与其实现方式的设计原则。
四.ISP:接口隔离原则
定义:如果A依赖于B,则B发生改动会导致A需要重新编译部署,故需要在A和B之间增加接口C,使B的改动不影响A。A和B可以理解为源代码,那么C应该是B源代码内的接口。
五.DIP:依赖反转原则
定义:控制流跨越架构边界的方向(实现类控制接口的实现)与源代码依赖关系跨域边界的方向(具体类依赖接口而非实现类)正好相反。
如果想要设计一个灵活的系统,在源代码层次的依赖关系中就应该多引用抽象的类型,而非具体的实现。
组件构建原则
一.组件聚合
1.REP:复用/发布等同原则
软件复用的最小粒度等同于软件发布的最小粒度
2.OCP:共同闭包原则
我们应该将那些会同时修改,并且为相同目的而修改的类放到同一个组件中,而将不会同时修改,并且不会为了相同目的而修改的那些类放到不同的组件中。
3.CRP:共同复用原则
不要强迫一个组件的用户依赖他们不需要的东西