References:【狂神说Java】通俗易懂的23种设计模式教学
什么是设计模式
定义
设计模式是针对特定问题的最佳解决方案,是从许多优秀的软件系统中总结出成功的可复用的设计方案。
简单来说,就是解决特定问题的一系列套路。
基本要素
-
名称
一个模式的名称高度概括该模式的本质,有利于该行业统一术语,便于交流使用。
-
问题
描述应该在何时使用模式,解释设计问题和问题存在的前因后果,描述在怎样的的环境下使用该模式。
-
方案
对设计的组成部分、它们之间的相互关系及各自的职责和协作方式进行抽象的描述。
-
效果
描述模式的应用效果及使用模式应当权衡的问题。主要效果包括使用模式对系统的灵活性、扩充性和复用性的影响。
学习设计模式的重要性
一个好的设计系统往往是易维护、易扩展、易复用的。设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性和多态性以及类的关联关系和组合关系的充分理解。
正确使用设计模式的优点:
- 提高程序员的思维能力、编程能力和设计能力
- 是程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期
- 使设计的代码易维护、易复用、可读性强、可靠性好、灵活性好
合理使用模式
并不是软件的任何部分都需要套用模式来设计的,必须针对具体问题合理的使用模式。
-
正确使用
当设计某个系统,并确认所遇到的问题刚好适合使用某个模式,就可以考虑使用该模式。
-
避免教条
灵活修改模式中的部分结构以符合自己的设计要求。
-
模式挖掘
可以在真实世界的软件系统中发现、总结新的模式。一个“准模式”只要经过**“三次规则”**(该模式在真实世界中的三个方案中被成功的采用),就会被行业认可。
-
避免乱用
不要有把锤子看着啥都像钉子在进行设计时,尽可能用最简单的方式满足系统的要求,而不是纠结于如何使用模式。如果牵强地使用某个模式,可能会在系统中增加许多额外的类和对象,影响系统的性能,不但增加复杂性,还降低了系统的效率。
-
了解反模式
反模式就是从某些软件系统中总结出的不好的设计方案。这些不好的方案表面上往往有很强的吸引力,人们很难一眼就发现它的弊端。
GoF23
创建型模式
- 单例模式
- 工厂模式
- 抽象工厂模式
- 建造者模式
- 原型模式
结构型模式
- 适配器模式
- 桥接模式
- 装饰模式
- 组合模式
- 外观模式
- 享元模式
- 代理模式
行为型模式
- 模板方法模式
- 命令模式
- 迭代器模式
- 观察者模式
- 中介者模式
- 备忘录模式
- 解释器模式
- 状态模式
- 策略模式
- 职责链模式
- 访问者模式