创建型模式分为类创建型模式和对象创建型模式。
(1)类创建型模式是指使用了继承关系,把类的构建(实例化)延迟到派生类中。
(2)对象创建型模式是把对象的创建过程委派给另一个对象,从而动态地决定客户端将得到哪些具体类的实例。
二、结构模式
(1)策略模式
用于:把系统的行为和环境巧妙地分开。
好处:环境类负责维持和查询行为类,而各种算法可在具体的策略类中提供。由于把算法和环境的分开,算法的管理都不会间接地影响到环境和客户端。
什么时候可以试着使用:
1、当许多相关的类只是行为有异时,在一组稍显差异的行为中能够选择一种行为来表示时。
2、当实现一个行为有多种算法时,也可以考虑应用策略模式。这些行为被封装到派生类中,拥有共同的接口或继承于一个抽象类。客户端只需要选择抽象类的对象就可以利用此抽象类下不同的派生类的行为。
3、当一组算法类不需要暴露给客户时。
4、当想减弱系统中出现的if⋯⋯..else语句时,因为这
些语句往往扮演着不同方案,可以考虑应用策略模式。
(2)状态模式
状态模式的意图是让一个对象在其内部状态改变的时候,其行为也随之改变。
状态模式需要对每一个系统可能取得的状态创立一个状态类的子类。当系统的状态变化时,系统便改变所选的子类。它是一种用主动态度来改变自己从而达成不同的协议或形成不同的效果的一种模式,强调的是一种主观行为,是一种行为的缔造者。
GOF模式 |
所处的位置 | 编辑的角度 |
策略模式 |
被动区 | 方法的集合 |
状态模式 | 主动区 | 所有自身变化包含的方案集合 |