C++设计模式(3)

本文预览:

  • 状态模式
  • 组合模式
  • 迭代器
  • 职责链
  • 命令

状态模式

定义:状态模式(State Pattern),允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

类型:对象行为型模式

一个对象有一个状态,那么每一个状态又对应一些相应的行为。如果这个对象有很多状态,那么就要对应非常多的行为。那么对这些状态的判断以及根据状态完成相应的行为,会非常复杂。并且如果想添加一种新的状态时,需要修改很多的现有代码。这也是有违开闭原则的。状态模式正是在这样一种情况下提出来的。

状态模式将每种状态对应的行为抽象出来成为单独的新的对象,这样将状态转换显式化了。状态的变换不再依赖于Context内部的行为了。另外,将状态及行为提出来能够大为降低Context对象的复杂度。另外如果一个State对应多个Context时,State还可以被多个Context对象共享。
状态,我们立马会提出,今天状态不好,做什么都没劲;又或者是今天状态很好,做事得劲,饭也吃得多。那么我们就以一个人不同时刻的状态为例来讲解状态模式。

C++设计模式(3)_第1张图片
state

组合模式

常常有一些组件在内部具有特定的数据结构,如果让客户程序依 赖这些特定的数据结构,将极大地破坏组件的复用。这时候,将这 些特定数据结构封装在内部,在外部 供统一的接口,来实现与特 定数据结构无关的访问,是一种行之有效的解决方案。
组合模式

迭代器模式

常常有一些组件在内部具有特定的数据结构,如果让客户程序依 赖这些特定的数据结构,将极大地破坏组件的复用。这时候,将这 些特定数据结构封装在内部,在外部 供统一的接口,来实现与特 定数据结构无关的访问,是一种行之有效的解决方案。
迭代器模式

职责链

在软件构建过程中,一个请求可能被多个对象处理,但是每个请 求在运行时只能有一个接受者,如果显式指定,将必不可少地带来 请求发送者与接受者的紧耦合
职责链

命令模式

命令模式

你可能感兴趣的:(C++设计模式(3))