设计模式-01 六大设计原则

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原则的解决方案

  1. 通过适配器,使用委托分离接口
  2. 接口分离,实现多个接口

注意

不能过度设计,一个类一个接口一个方法

LOD

LOD(Law of Demeter)原则,即最少知道原则(迪米特法则)

说明

一个软件实体应当尽可能少的与其他实体发生相互作用

应该尽量减少对象之间的交互,如果两个对象之间不必彼此直接通信,那么这两个对象就不应当发生任何直接的相互作用


分享到:


相關文章: