GoF行为型模式详解:职责链、观察者与更多

需积分: 9 1 下载量 40 浏览量 更新于2024-07-20 收藏 1.3MB PPT 举报
"GoF的行为型模式讲义" 在软件设计中,行为型模式是一种重要的设计模式类别,它关注的是对象之间的交互以及算法的分配。这些模式描述了对象如何通信和协同工作,甚至刻画了运行时可能变得复杂的控制流程。行为型模式可以分为两类:行为类模式和行为对象模式。行为类模式利用继承来在类之间分配行为,而行为对象模式则通过对象间的协作来实现单一对象无法完成的任务。 GoF的行为型模式共有11种,包括: 1. Mediator(中介者):通过创建一个中介对象来封装一系列的对象交互,使得这些对象不必互相了解彼此的细节,降低了系统的耦合度。 2. Memento(备忘录):用于保存对象的状态,以便在未来恢复到该状态,保护了对象的内部状态,同时也提供了外部访问这些状态的能力。 3. Observer(观察者):定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 4. State(状态):允许一个对象在其内部状态改变时改变其行为,看起来像是改变了它的类。 5. Strategy(策略):定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换,让算法独立于使用它的客户。 6. TemplateMethod(模板方法):在抽象类中定义了一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 7. Visitor(访问者):表示一个作用于某对象结构中的各元素的操作。它使得可以在不改变各元素类的前提下定义作用于这些元素的新操作。 8. ChainOfResponsibility(职责链):将一系列的对象链接在一起,形成一条链,在这条链上传递请求,直到有对象处理这个请求。这种方式避免了发送者与接收者之间的耦合。 9. Command(命令):将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。 10. Interpreter(解释器):提供一个语言的文法表示,并定义了一个接口,该接口用于解释那个文法的每个符号。 11. Iterator(迭代器):提供一种方法顺序访问一个聚合对象的元素,而又不暴露其底层表示。 其中,ChainOfResponsibility模式(职责链)是一个典型的行为对象模式。它的目的是使得多个对象有机会处理一个请求,从而避免发送者与接收者之间的直接耦合。在职责链模式中,请求会沿着对象链传递,直到某个对象处理它。这种模式常见于图形用户界面的帮助系统,用户在界面上的任意位置点击,系统会根据点击位置提供相应的帮助信息。这种机制通常将帮助信息组织成从最具体到最一般的层次,每个界面对象都有机会处理请求,或者将请求传递给链上的下一个对象。 为了实现职责链模式,每个链上的对象都应具有统一的处理请求和访问后续对象的接口。这样,客户端就可以无感知地向链中添加、删除或调整对象,而不会影响整体的处理流程。例如,按钮、对话框和应用程序类可能都实现了HelpHandler操作,这样它们就能组成一个帮助处理链,共同处理用户的帮助请求。通过这种方式,职责链模式实现了请求的解耦和灵活的职责分配。