SRP
SRP(single responsibility principle)原则,即单一职责原则。
说明
职责:可以理解为变化的原因。
单一职责原则:就一个类而言,仅有一个引起它变化的原因
违反原则:如果一个类承担的职责过多,职责必然存在耦合,一个职责的变化可能导致其他职责出现问题
举例
1、数据库类设计,针对数据库连接和数据库数据操作两个职责,至少分成两个类或者接口
2、实体类设计;针对实体类的业务计算与持久化两个职责,至少分成
两个类或者接口OCP
OCP(open closed principle)原则,即开闭原则。
说明
开闭原则:软件可以扩展,但不能修改
特征:对于扩展开放(open for extension),对于修改关闭(closed for modification)
注意点:避免过度设计,仅对频繁变化的部分做抽象即可
举例
1、Spring TransactionManager 采取模板设计模式:对数据库事务的开启,提交,回滚操作封闭,对数据库数据的操作(频繁变化的部分)增删改查开放 。
LSP
LSP(liskov principle)原则,即liskov替换原则。
liskov
liskov替换原则由liskov提出: 是位女性(很了不起),芭芭拉·利斯科夫(Barbara Liskov),本名Barbara Jane Huberman。美国计算机科学家,2008年图灵奖得主,2004年约翰·冯诺依曼奖得主。现任麻省理工学院电子电气与计算机科学系教授。
说明
liskov替换原则:子类型必须能够替换掉他们的父类
解释说明:存在类PARENT,所在的程序中,如果类CHILD替换掉类PARENT,程序行为功能不变,则CHILD是PARENT的子类。可以看出违反LSP原则,间接也违反了OCP原则(开闭原则)
违反LSP原则的可选解决方案:当类CHILD无法替代类PARENT时,可以考虑分析CHILD和PARENT的行为,尝试抽象出类SUPERPARENT
DIP
DIP(dependency inversion principle)原则,即依赖倒置原则。
说明
高层模块不应该依赖于低层模块,二者都应该依赖于抽象
抽象不应该依赖于细节,细节应该依赖于抽象
面向程序设计:策略依赖于细节,违背DIP原则
面向对象设计:真正的面向对象设计,倒置依赖关系,细节和抽象都依赖于接口
ISP
ISP(interface segregation principle)原则,即接口隔离原则。
说明
ISP原则:不强迫客户依赖它们不用的方法
如果类的接口不是内聚的,就表示违反了
接口隔离原则违背ISP原则的解决方案
- 通过适配器,使用委托分离接口
- 接口分离,实现多个接口
注意
不能过度设计,一个类一个接口一个方法
LOD
LOD(Law of Demeter)原则,即最少知道原则(迪米特法则)
说明
一个软件实体应当尽可能少的与其他实体发生相互作用
应该尽量减少对象之间的交互,如果两个对象之间不必彼此直接通信,那么这两个对象就不应当发生任何直接的相互作用
閱讀更多 IT學習分享 的文章