设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。
设计模式一般包含模式名称、问题、目的、解决方案、效果等组成要素,其中关键要素是模式名称、问题、解决方案和效果。
- 模式名称(Pattern Name)通过一两个词来描述模式的问题、解决方案和效果,以便更好地理解模式并方便开发人员之间的交流,绝大多数模式都是根据其功能或模式结构来命名的(GoF设计模式中没有一个模式用人名命名,微笑);
- 问题(Problem)描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因;解决方案(Solution)描述了一个设计模式的组成成分,以及这些组成成分之间的相互关系,各自的职责和协作方式,通常解决方案通过UML类图和核心代码来进行描述;
-
效果(Consequences)描述了模式的优缺点以及在使用模式时应权衡的问题。
根据它们的用途,设计模式可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三种- 创建型模式主要用于描述如何创建对象
- 结构型模式主要用于描述如何实现类或对象的组合
- 行为型模式主要用于描述类或对象怎样交互以及怎样分配职责
在GoF 23种设计模式中包含5种创建型设计模式、7种结构型设计模式和11种行为型设计模式。此外,根据某个模式主要是用于处理类之间的关系还是对象之间的关系,设计模式还可以分为类模式和对象模式。我们经常将两种分类方式结合使用,如单例模式是对象创建型模式,模板方法模式是类行为型模式。
image.png在学习每一个设计模式时至少应该掌握如下几点:
- 这个设计模式的意图是什么,它要解决一个什么问题,什么时候可以使用它;
- 它是如何解决的,掌握它的结构图,记住它的关键代码;
- 能够想到至少两个它的应用实例,一个生活中的,一个软件中的;
- 这个模式的优缺点是什么,在使用时要注意什么。
模式从不保证任何东西,它不能保证你一定能够做出可复用的软件,提高你的生产率,更不能保证世界和平。模式并不能替代人来完成软件系统的创造,它们只不过会给那些缺乏经验但却具备才能和创造力的人带来希望。
网友评论