当前位置:   article > 正文

【设计模式】详解设计模式中的六大设计原则_设计模式六大原则

设计模式六大原则

针对设计模式中六大设计原则进行详细讲解


前言

设计模式中的设计原则是指导我们如何设计出灵活、可复用、易于维护的软件系统的一系列准则。这些原则帮助开发者在面对复杂问题时,能够做出更加合理、高效的设计决策。核心的设计原则主要有六种:单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则、迪米特原则和开闭原则


提示:以下是本篇文章正文内容,下面案例可供参考

一、单一职责原则

定义:应该有且仅有一个原因引起类的变更。也就是一个接口或者类只能有一个职责

单一职责原则不仅适用于接口和类,也适用于方法。一个方法尽可能只做一件事,比如一个修改用户密码的方法,不要把这个方法放到“修改用户信息”方法中。

单一职责的好处

  1. 类的复杂性降低,实现什么职责都有清晰明确的定义;

  2. 可读性高,复杂性降低,可读性自然就提高了;

  3. 可维护性提高,可读性提高了,那自然更容易维护了;

  4. 变更引起的风险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性、维护性都有非常大的帮助。

二、里式替换原则

任何父类可以出现的地方,子类一定可以出现。子类不要重写父类的方法,可以扩展,不要修改父类的方法。

只要父类能出现的地方,子类就可以出现,而且替换为子类也不会产生任何错误或异常。但是有子类出现的地方,父类未必就能适应。

1. 子类必须完全实现父类的方法。

2. 子类可以有自己的个性。

3. 覆盖或实现父类的方法时,输入参数可以被放大。

4. 覆盖或实现父类的方法时,输出结果可以被缩小。

在项目中,采用里氏替换原则时,尽量避免子类的“个性”,一旦子类有“个性”,这个子类和父类之间的关系就很难调和了

三、依赖倒置原则

要面向接口编程,不要面向实现编程。

依赖倒转原则是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

  • 高层模块不应该依赖底层模块,两者都应该依赖其抽象
  • 抽象不应该依赖细节
  • 细节应该依赖抽象

依赖倒置原则在Java语言中的表现就是:

  • 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的
  • 接口或抽象类不依赖于实现类
  • 实现类依赖接口或抽象类

依赖倒置原则的本质就是通过抽象(接口或抽象类)使各个类或模块的实现彼此独立,不互相影响,实现模块间的松耦合。

四、接口隔离原则

要为各个类建立它们所需要的专用接口。

客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上。

接口隔离原则要求接口的纯洁性,接口隔离原则时对接口进行规范约束,包含4层含义:

  • 接口要尽量小:这是几口隔离原则的核心定义,不出现臃肿的接口(fat interface),但是“小”是有限度的,首先就是不能违反单一职责原则。
  • 接口要高内聚:就是提高接口,类、模块的处理能力,减少对外的交互。
  • 定制服务:一个系统或系统内的模块之间必然会有耦合,有耦合就要有互相访问的接口。设计时就需要为各个访问者(即客户端)定制服务,定制服务就是单独为一个个体提供优良的服务。采用定制服务就必然有一个要求:只提供访问者需要的方法。
  • 接口设计时有限度的:接口的设计粒度越小,系统越灵活,这是不争的事实。但是,灵活的同时也带来了结构的复杂化,开发难度增加,可维护性降低。

实践中根据以下几个规则来衡量:

  • 一个接口只服务于一个子模块或业务逻辑;
  • 通过业务逻辑压缩接口中的public方法,接口时常去回顾,尽量让接口达到“满身筋骨肉”,而不是“肥嘟嘟”的一大堆方法。
  • 已经被污染的接口,尽量去修改,若变更的风险较大,则采用适配器模式进行转化处理。
  • 了解环境,拒绝盲从。

五、迪米特法则

只和你的朋友对接,不要和你朋友的朋友对接。

迪米特法则也称为最少知识原则(least knowledge principle),虽然名字不同,但描述的是同一个规则:一个对象应该对其他对象有最少的了解。通俗地讲,一个类应该对自己需要耦合或调用的类知道得最少,你(被耦合或调用的类)的内部是如何复杂都和我没有关系,那是你的事情,我就知道提供的这么多public方法,我就调用这么多,其他的我一概不关心。

迪米特法则的核心观念就是类间解耦,弱耦合,只有弱耦合了以后,类的复用率才可以提高。其要求的结果就是产生了大量的中转和跳转类,导致系统的复杂性提高,同时也为维护带来了难度。需要反复权衡,既做到结构清晰,又做到高内聚低耦合。

六、开闭原则

对扩展开放,对修改关闭。

开闭原则定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭

开闭原则的的重要性:

  • 开闭原则对测试的影响:测试时出错,测试失败时。通过扩展来实现业务逻辑的变化,而不是修改。
  • 开闭原则可以提高复用性:在面向对象的设计中,所有的逻辑都是从原子逻辑组合而来的,而不是在一个类中独立实现一个业务逻辑。只有这样的代码才可以复用,粒度越小,被复用的可能性越大。
  • 开闭原则可以提高可维护性

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/1022418
推荐阅读
相关标签
  

闽ICP备14008679号