Spring5核心源码-第1章 软件架构设计原理

Spring5核心源码

第1章 软件架构设计原理

1.1 开闭原则(Open-Close Principle,OCP)

针对扩展开放、对修改关闭 JavaDiscountCourse→JavaCourse→ICourse

1.2 依赖倒置原则(Dependence Inversion Principle,DIP)

高层模块不能依赖底层模块,二者都不能依赖其抽象。抽象不能依赖细节,细节应该依赖抽象。目的就是减少耦合。

123
参数注入方法 构造器方法 Setter方法

以抽象为基准比以细节为基准搭建起来的架构要稳定的多。

1.3 单一职责原则(Simple Responsibility Principle,SRP)

不要存在多于一个导致类变更的原因。

1.4 接口隔离原则(Interface Segregation Principle,ISP)

使用多个专用接口,而不使用单一总接口,客户端不应该依赖它不需要的接口。

序号要求核心要点
1 一个类对另一个类的依赖应该建立在最小接口之上 最小接口
2 建立单一接口,不要建立庞大臃肿的接口 精简接口
3 尽量细化接口,接口中的方法尽量少 细化接口

高内聚、低耦合的设计思想,使类具有可读性、扩展性和可维护性。

1.5 迪米特原则(Law of Demeter,LoD)

一个对象应该对其他对象保持最少的了解,又叫最少知道原理(Least Knowledge Principle,LKP),尽量降低类与类之间的耦合度。 迪米特原理强调只和朋友交流,不和陌生人说话。

1.6 里氏替换原则(Liskv Substitution Principle,LSP)【困难!!!】

一个软件实体如果适用于一个父类,那么一定适用于其子类,所有引用父类的地方必须能透明地使用其子类的对象,子类对象能够替换父类对象,二程序逻辑不变。

优点:
①约束继承泛滥,是一种开闭原则的体现;
②加强程序的健壮性,同时变更时也可以做到很好的兼容性,提高程序的可维护性和扩展性,降低需求变更时引入的风险。

1.7 合成复用原则(Composite/Aggregate Reuse Principle,CARP)

尽量使用对象组合(has-a)/聚合(contanis-a)而不是继承关系达到软件复用的目的。 继承叫做白箱复用,组合/聚合相当于黑箱复用。

原文地址:https://www.cnblogs.com/Mufasa/p/13409250.html