前言
根据设计模式之间的共性(功能、针对的角色等角度),可以把设计模式分为几类,常见的有两种分类:
根据功能分类:创建型、行为型、结构型
根据模式所处理的类型:类模式、对象模式
分类1
# 创建型:(焦点:对象实例化)
此类模式涉及到将对象实例化,都提供一个方法,将客户从所需要实例化的对象中解耦。
Factory Method、Abstract Factory、Singleton、Builder(生成器/建造者)、Prototype(原型)
# 行为型: (焦点:一个模式中,对象之间的功能、职责和互联)
只要是行为型模式,都涉及到类和对象如何交互及分配职责
Strategy、Observer、Command、Template Method、Iterator、State、Chain of Responsibility(责任链)、Interpreter(解释器)、Mediator(中介者)、Memento(备忘录)、Visitor(访问者)
# 结构型:(焦点:如何动态地组合对象以获取新的功能)
说法1:此类模式,可以把类或对象组合到更大的结构中
说法2:此类模式,用来描述类和对象如何被组合以建立新的结构或功能
Decorator、Adapter、Facade、Composite、Proxy、Bridge、Flyweight(享元/蝇量)
注意:
- 装饰者模式为什么归类为结构类目中?
装饰者模式允许通过“将某对象包装进另一个对象的方式”,来组合对象以提供新的功能。所以焦点在于如何动态地组合对象以获取功能,而不是行为型模式的目的 — 对象之间的功能和互联。
分类2:
还有一种分类方式:模式所处理的是类还是对象
# 类模式
类模式描述类之间的关系如何通过继承定义。类模式的关系是在编译时建立的
Template Method、Factory Method、Adapter、Interpreter
# 对象模式
对象模式描述对象之间的关系,而且主要是利用组合定义。对象模式的关系通常在运行时建立,而且更加动态、更加弹性
Singleton、Abstract Factory、Builder、Prototype、Iterator、Command、Observer、State、Strategy、Visitor、Mediator、Memento、Chain of Responsibility、Decorator、Proxy、Composite、Facade、Bridge、Flyweight
分类有利于理解、思考。有利于比较、选型。
怎么分类并不重要,重要的是了解这些模式和它们之间的关系,只要类目有帮助,我们就用,反之就不用。
网友评论