设计模式|菜鸟教程 - C1 Intro

https://www.kancloud.cn/sstd521/design/193601
https://www.runoob.com/design-pattern/design-pattern-tutorial.html

0 TL;DR

两个核心,六大规则

1 GOF核心

对接口编程而不是对实现编程。
优先使用对象组合而不是继承。

2 设计模式的类型

2.1 类型

http://www.runoob.com/design-pattern/design-pattern-intro.html

2.2 UML图

https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html

2.3 关系图

2.4 不同软件实体之间的关系

https://www.cnblogs.com/cutepig/archive/2007/10/11/921357.html

3 六(七)大基本原则

https://www.jianshu.com/p/807bc228dbc2
https://zhuanlan.zhihu.com/p/24614363
http://www.uml.org.cn/sjms/201211023.asp

单一职责 (Single Responsibility Principle)

一个类负责一个职责;假设某个类 P 负责两个不同的职责,职责 P1 和 职责 P2,那么当职责 P1 需求发生改变而需要修改类 P,有可能会导致原来运行正常的职责 P2 功能发生故障。

开闭 (Open-Closed Principle)

对软件实体(类、模块、函数等等)扩展开放,对修改关闭;这样能实现热插拔,扩展性好易于维护

  1. 能够扩展已存在的系统,能够提供新的功能满足新的需求,因此该软件有着很强的适应性和灵活性。
  2. 已存在的模块,特别是那些重要的抽象模块,不需要被修改,那么该软件就有很强的稳定性和持久性。

代换 (Liskov Substitution Principle)

派生类可以替换掉基类;基类出现的地方,子类都可以出现,就是有一套干活规则,遵从这一套规则的都可以干活,这样添加新的功能时,旧的功能还能使用;
里氏替换原则的重点在不影响原功能,而不是不覆盖原方法

倒转 (Dependence Inversion Principle)

面向接口编程,依赖于抽象而不依赖于具体;制定一套使用规则,两边一起开发;

隔离 (Interface Segregation Principle)

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

  1. 接口隔离原则的思想在于建立单一接口,尽可能地去细化接口,接口中的方法尽可能少
  2. 但是凡事都要有个度,如果接口设计过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。

最小 (Law Of Demeter)

一个实体和其他实体少发生作用,相互相对独立;只与直接的朋友通信
什么是直接的朋友:每个对象都会与其他对象有耦合关系,只要两个对象之间有耦合关系,我们就说这两个对象之间是朋友关系。耦合的方式很多,依赖、关联、组合、聚合等。其中,我们称出现成员变量、方法参数、方法返回值中的类为直接的朋友,而出现在局部变量中的类则不是直接的朋友。

复用 (Composite/Aggregate Reuse Principle)

尽量使用合成复用的方式,而不是使用继承;
在面向对象的设计中,如果直接继承基类,会破坏封装,因为继承将基类的实现细节暴露给子类;如果基类的实现发生了改变,则子类的实现也不得不改变;从基类继承而来的实现是静态的,不可能在运行时发生改变,没有足够的灵活性。于是就提出了组合/聚合复用原则,也就是在实际开发设计中,尽量使用组合/聚合,不要使用类继承。
例子:https://blog.csdn.net/LoveLion/article/details/7563441
https://blog.csdn.net/fanyun_01/article/details/51952445

你可能感兴趣的:(设计模式|菜鸟教程 - C1 Intro)