- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计模式——12迭代器模式与中介者模式
迭代器模式与中介者模式 Sunny Liu weiliu_china@126.com * * 内 容 迭代器模式 中介者模式 迭代器模式 模式动机 以聚合对象为例,聚合是一个管理和组织数据对象的数据结构。这就表明聚合首先应具备一个基本属性,就是聚合能够存储数据,这其中包含存储数据的类型、存储空间的大小、存储空间的分配、以及存储的方式和顺序。不具备这些特点,则该对象就不成其为聚合对象。也就是说,上述这些属性是聚合对象与身俱来的,是其密不可分的职责。然而,聚合对象除了能够存储数据外,还必须提供访问其内部数据的行为方式,这是一种遍历机制。同时这种遍历方式,或会根据不同的情形提供不同的实现,如顺序遍历,逆序遍历,或是二叉树结构的中序、前序、后序遍历。 聚合对象拥有的两个职责:一是存储内部数据;二是遍历内部数据。从依赖性来看,前者为聚合对象的根本属性,属于一生俱生,一亡俱亡的关系;而后者既是可变化的,又是可分离的。因此,我们将遍历行为分离出来,抽象为一个迭代器,专门提供遍历聚合内部数据对象的行为。这就是迭代器模式的本质。 迭代器模式(续) 模式定义 迭代器模式(Iterator Pattern):提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。 迭代器模式(续) 模式结构 迭代器模式(续) 参与者 Iterator:迭代器 ConcreteIterator:具体迭代器 Aggregate:聚合 ConcreteAggregate:具体聚合 迭代器模式(续) 模式解释 Java JDK 1.2 引入了新的聚合(Collections)框架,它为表示和操作聚合数据提供了一种统一的架构。 java.util包中包含了一系列重要的聚合类。聚合框架包括以下三个方面: 接口:抽象表示聚合的数据类型。 实现:聚合接口的具体实现。 算法:执行有效计算的方法,象搜索和排序等,这些算法基于对象执行,并实现collection接口。 迭代器模式(续) 模式解释 Java Collections 框架中的接口层次结构如下: 迭代器模式(续) 模式解释 迭代器模式(续) 实例分析 实例一:自定义简单迭代器 迭代器模式(续) 实例分析 实例一:自定义简单迭代器 (代码实现) 迭代器模式(续) 实例分析 实例二:电视机遥控器 迭代器模式(续) 实例分析 实例二:电视机遥控器(代码实现) 迭代器模式(续) 模式优缺点 迭代器模式有三个重要的作用: 它支持以不同的方式遍历一个聚合。 迭代器简化了聚合接口。 在同一个聚合上可以有多个遍历。 迭代器模式(续) 模式使用 在以下情况下可以使用迭代器模式: 访问一个聚合对象的内容而无需暴露它的内部表示。 支持对聚合对象的多种遍历。 为遍历不同的聚合结构提供一个统一的接口。 迭代器模式(续) 模式应用 在JDK类库中,Collection接口有一个方法iterator(),返回一个java.util.Iterator类型,而java.util.List接口的listIterator()方法返回一个java.util.ListIterator类型。它们构成了Java语言对迭代器模式的支持。Java语言的java.util.Iterator接口就是迭代器模式的应用。 练 习 迭代器模式中有哪些参与者,简述其职责。 实现一个双向迭代器,可以进行前向和后向遍历。 中介者模式 模式动机 在面向对象的设计中,我们通常尽量把对象细化,使其只负责或呈现单一的职责,这样在某些情况下,对于一个模块,可能就需要由很多对象构成,如一个图形用户界面对话框由若干个窗口组件组成, 包括菜单选择框、输入框和按钮,为了便于用户使用和表现相关性,一个窗口组件的内容改变可能会影响其它窗口组件的内容, 这样该窗口组件就需要具有显式的对其它窗口组件的引用,并且在变化的时候通过该引用通知其它组件。在一个极端的情况下,每个窗口组件都需要引用其它的窗口组件,且在组件内容变更时调用其它组件的相关方法。 为了降低组件之间的关联,使之成为一个松耦合的系统,我们需要使用中介者模式。 中介者模式(续) 模式定义 中介者模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。中介者模式是一种对象行为型模式。 中介者模式(续) 模式结构 中介者模式(续) 参与者 Mediator:抽象中介者 ConcreteMediator:具体中介者 Colleague:抽象同事类 ConcreteColleague:具体同事类 中
文档评论(0)