简单的理解,还需要进一步研究……
Visitor: 基于一个稳定的类结构层次,为了在基本不改变类定义的情况下增加作用于这些类的新的操作,基于一个统一的接口为每个新操作定义一个访问者类,访问者类中为每个需要访问的类提供一个专门的访问方法。通过将访问者对象的引用配置到被访问类中,以便被访问对象将自身做为参数,回调访问者访问方法,从而支持访问者实现新操作。
Observer: 将对对象的某个事件或状态变化感兴趣的客户注册为观察者,当事件发生或状态变化时,对象将自身作为输入参数,回调观察者的观察方法,从而实现一个事件的通知机制。
Template Method: 父类将多个子类的公共逻辑部分封装为一个骨架函数,函数中调用子类重载实现的基本操作或个性化操作。
Iterator: 对于多个容器类,它们的内部存储结构不一样,但都需要被遍历。基于统一的接口为每个容器子类定义对应的迭代器子类,屏蔽内部结构差异。
State: 一个类在不同的状态下执行不同的业务逻辑。定义一个新的状态基类类,以及代表不同状态的子类,将业务逻辑视状态而定的函数移到状态子类中实现。客户调用时间接调用状态子类函数。
Memento: 将对象的状态保存在备忘录对象中,储存起来,以便在需要恢复的时候可以重新拿出来使用。
Mediator: 一个模块内的多个对象需要互相通讯,关系比较复杂。定义一个中介者对象接收所有对象的通知消息,再广播给其他对象。
Chain of Responsibility: 为一个事件寻找一个处理者。处理事件的对象按一定的规则形成一个对象链,处理事件的请求在链上传递,如果某对象没有职责处理,则传给下一个对象,直到被处理。
Command: 将请求封装为对象
Strategy: 将策略封装为单独的类和子类,为不同的客户选择不同的子类。
Interpreter: 还没有深入研究