我们一起来读书吧 关注:153贴子:2,628
  • 0回复贴,共1

《设计模式》第5章 可复用面向对象软件的基础 5.4-5.5

只看楼主收藏回复

第5.4节:迭代器模式 (Iterator)
定义:迭代器模式提供了一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
应用场景:
需要访问一个聚合对象的内容而无需暴露其内部细节。
需要支持多种遍历方式。
优点:
它支持以不同方式遍历一个聚合对象。
简化了聚合的接口。
缺点:
增加了实现的复杂性。
第5.5节:中介者模式 (Mediator)
定义:中介者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
应用场景:
系统中对象之间的交互是复杂的,导致相互依赖且难以复用。
想通过引入一个中间类来使系统的多个类之间解耦。
优点:
降低了对象之间的耦合度,使得它们可以独立地变化。
简化了对象协议,使对象之间的通讯更加清晰。
缺点:
中介者可能会变得过于复杂,成为难以维护的部分。
读书笔记
迭代器模式的实用性:通过迭代器模式,能够以统一的接口访问不同类型的集合。从而可以在不改变集合对象的前提下,增加新的遍历方式。
中介者模式的解耦作用:通过引入中介者对象,减少了对象之间的直接依赖关系,使系统结构更为清晰,便于维护。
感想
设计模式的灵活性:迭代器和中介者模式都体现了设计模式在解耦和简化代码结构方面的优势。特别是在复杂系统中,可以通过这些模式大大简化代码。
模式的权衡:在使用中介者模式时,需要注意中介者对象自身的复杂性,避免其成为系统的瓶颈。
案例迭代器模式案例:书架
问题背景:实现一个书架类,支持对书籍的遍历。
设计方案:
定义一个Iterator接口,提供遍历书籍的方法。
实现具体的BookShelfIterator类来遍历BookShelf。
BookShelf类提供一个方法来返回一个迭代器实例。
优点:可以很容易地更改迭代的方式或增加新的迭代方式,而不影响书架的实现。
中介者模式案例:聊天室
问题背景:实现一个聊天室应用,用户可以发送和接收消息。
设计方案:
定义一个ChatMediator接口,处理用户之间的消息传递。
实现具体的ChatRoom类作为中介者。
用户类通过中介者发送和接收消息,而不直接与其他用户交互。
优点:用户间的交互通过中介者进行管理,便于管理和扩展。


IP属地:北京1楼2024-11-01 16:53回复