架构整洁之道
设计原则
软件架构的终极目标是,用最小的人力成本来满足构建和维护该系统的需求。
一、设计原则
1,SRP:单一职责原则
该原则是基于康威定律的一个推论 —— 一个软件系统的最佳结构高度依赖于开发这个系统的组织的内部结构。
SRP 最容易被误解认为是指:每个模块都应该只做一件事。而 SRP 的描述是:任何一个软件模块都应该只对某一类行为者负责。
2,OCP:开闭原则
OCP:设计良好的计算机软件应该易于扩展,同时抗拒修改。
换句话说:一个设计良好的计算机系统应该在不需要修改的前提下就可以轻易的被扩展。其实这也是研究软件架构的根本目的。
3,LSP:里氏替换原则
这里需要的是一种可替换性:如果对于每个类型是S的对象o1都存在一个类型为T的对象o2,能使操作T类型的程序P在用o2替换o1时行为保持不变,我们就可以将S称为T的子类型。
4,ISP:接口隔离原则
任何层次的软件设计如果依赖了它并不需要的东西,就会带来意料之外的麻烦。
5,DIP:依赖反转原则
如果想要设计一个灵活的系统,在源代码层次的依赖关系中就应该多应用抽象类型,而非具体实现。
也就是说,如果想要在软件架构设计上追求稳定,就必须使用稳定的抽象接口,少依赖多变的具体实现。
- 应在代码中多使用抽象接口,尽量避免使用那些多变的具体实现类。
- 不要在具体的实现类上创建衍生类。
- 不要覆盖(override)包含具体实现的函数。
- 应避免在代码中写入与任何具体实现相关的名字,或者是其他容易变动的事物的名称。
在大部分面向对象编程语言中,都会选择用抽象工程模式类解决这个源代码依赖的问题。
二、组件构建原则
1,组件聚合
1)REP:复用/发布等同原则(为复用性而组合)
软件复用的最小粒度应等同于其发布的最小粒度。
也就是说,一个组件不能有一组毫无关联的类和模块组成,它们质检应该又一个共同的主题或者大方向。
2)CCP:共同闭包原则(为维护性而组合)
我们应该将那些会同时修改,并且为相同目的而修改的类放到同一个组件中,而将不会同时修改,并且不会为了相同目的而修改的那些类放到不同的组件中。
CCP 的主要作用就是提示我们要将所有可能会被一期修改的类集中在一起。
CCP 原则实际上是 SRP 原则的组件版。
This chapter requires login to view full content. You are viewing a preview.
Login to View Full Content