设计模式七大设计原则

文章目录

  • 前言
  • 1. 迪米特法则
  • 2. 单一职责原则
  • 3. 开放-封闭原则
  • 4. 里氏替换原则
  • 5. 依赖倒转原则
  • 6. 接口隔离原则
  • 7. 合成复用原则
  • 总结
  • 参考


前言

之前复习设计模式时,总是提到设计原则,也没有细说,这里跟大家分享下设计模式中的7个设计原则。


1. 迪米特法则

《大话设计模式》中的定义如下:
设计模式七大设计原则_第1张图片
迪米特法则,又称为最少知识原则,即每一个类都应当尽量降低成员的访问权限,尽量把复杂的逻辑封装起来,提供给外面的接口不变的情况下,如果内部逻辑改变,不影响接口的使用者。说白点就是强调类间的松耦合,我们都知道,类间耦合关系越弱,越容易被复用,即弱耦合的类被修改,使用该类的其它类不会受影响(这是我们期望的)。

2. 单一职责原则

《大话设计模式》中的定义如下:
在这里插入图片描述
这个原则建议我们一个类只负责一个职责,即只会有一个引起变化的地方。如果一个类承担的职责过多的话,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。只有单一职责的类才能更容易维护、扩展、复用。

3. 开放-封闭原则

《大话设计模式》中的定义如下:
在这里插入图片描述
开放-封闭原则就是我们常说的对扩展开放,对修改关闭,即允许通过使用继承抽象类添加子类来实现新的功能,不允许修改已有类中的方法来实现新的功能(这是我们的期望,但一般很难做到完全不修改)。这就要求我们对可能变化的部分抽象并封装起来,这样以后应对这种变化时就可以通过继承扩展来实现,比如我们前面提到的策略模式就是这样做的。可能一开始我们不知道哪些是会变化的,没关系,我们可以在后面第一次遇到变化时再做抽象,这样,以后再有新的变化,就可以用扩展来实现了。

其实说白了,开放-封闭原则就是当有变化发生时,我们应对程序进行添加新的代码,而不是更改已有代码来实现。

4. 里氏替换原则

《大话设计模式》中的定义如下:
在这里插入图片描述
白话解释就是说,在软件中,把父类替换成它的子类,程序的行为不会发生变化,用户察觉不出有什么区别。这也是C++中常用到的多态技术的基础。

5. 依赖倒转原则

《大话设计模式》中的定义如下:
设计模式七大设计原则_第2张图片
依赖倒转原则就是告诉我们要针对接口编程,而不是针对具体实现编程,我们前面复习的设计模式基本都是先创建抽象类,然后创建继承抽象类的子类,比如装饰器模式中具体装饰类与抽象装饰类,观察者模式中具体观察者和抽象观察者,策略模式中具体策略与抽象策略,…。

依赖倒转原则是依赖于里氏替换原则的,只有满足里氏替换原则定义的抽象类与子类,才能实现该原则不怕修改的目标。所以在设计时针对抽象(抽象类)编程而不是针对具体细节(具体类)编程,这样程序中所有的依赖关系都止步于抽象类或者接口,当变化发生时,只要扩展变化就可以,接口或者抽象类没有发生变化,也就不怕变化,不怕修改了。

6. 接口隔离原则

网上查到的定义是【链接】:
在这里插入图片描述
个人理解,这个原则是针对接口的设计,接口内只包括必要的方法,不能有其它方法的存在,有点类似于单一职责原则。

7. 合成复用原则

网上查到的定义是【链接】:
在这里插入图片描述
这个原则贯穿大多数设计模式,多用合成复用,少用继承复用,之前复习的组合模式最具代表性,当然名字也相似。

总结

这7个设计原则在设计模式中都有体现,但是不是每个设计模式都满足这七个原则,这是很难做到的,就像要求用户不改变需求一样,软件设计与开发中善用设计模式和设计原则有助开发出灵活、复用、扩展性好、易维护的软件产品。

参考

《大话设计模式》

你可能感兴趣的:(C++设计模式,设计模式)