网站大量收购闲置独家精品文档,联系QQ:2885784924

第3章 创建型模式.pdf

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 创建型模式

下载 第3章 创建型模式 创建型模式抽象了实例化过程。它们帮助一个系统独立于如何创建、组合和表示它的那 些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建型模式将实例化委 托给另一个对象。 随着系统演化得越来越依赖于对象复合而不是类继承,创建型模式变得更为重要。当这 种情况发生时,重心从对一组固定行为的硬编码( h a r d - c o d i n g )转移为定义一个较小的基本 行为集,这些行为可以被组合成任意数目的更复杂的行为。这样创建有特定行为的对象要求 的不仅仅是实例化一个类。 在这些模式中有两个不断出现的主旋律。第一,它们都将关于该系统使用哪些具体的类 的信息封装起来。第二,它们隐藏了这些类的实例是如何被创建和放在一起的。整个系统关 于这些对象所知道的是由抽象类所定义的接口。因此,创建型模式在什么被创建,谁创建它, 它是怎样被创建的,以及何时创建这些方面给予你很大的灵活性。它们允许你用结构和功能 差别很大的“产品”对象配置一个系统。配置可以是静态的(即在编译时指定),也可以是动 态的(在运行时)。 有时创建型模式是相互竞争的。例如,在有些情况下 P r o t o t y p e (3 . 4 )或Abstract Factory (3 . 1 )用起来都很好。而在另外一些情况下它们是互补的: B u i l d e r (3 . 2 )可以使用其他模式 去实现某个构件的创建。P r o t o t y p e (3 . 4 )可以在它的实现中使用S i n g l e t o n (3 . 5 )。 因为创建型模式紧密相关,我们将所有5个模式一起研究以突出它们的相似点和相异点。 我们也将举一个通用的例子—为一个电脑游戏创建一个迷宫—来说明它们的实现。这个迷 宫和游戏将随着各种模式不同而略有区别。有时这个游戏将仅仅是找到一个迷宫的出口;在 这种情况下,游戏者可能仅能见到该迷宫的局部。有时迷宫包括一些要解决的问题和要战胜 的危险,并且这些游戏可能会提供已经被探索过的那部分迷宫地图。 我们将忽略许多迷宫中的细节以及一个迷宫游戏中有一个还是多个游戏者。我们仅关注 迷宫是怎样被创建的。我们将一个迷宫定义为一系列房间,一个房间知道它的邻居;可能的 邻居要么是另一个房间,要么是一堵墙、或者是到另一个房间的一扇门。 类R o o m 、D o o r和Wa l l定义了我们所有的例子中使用到的构件。我们仅定义这些类中对创 建一个迷宫起重要作用的一些部分。我们将忽略游戏者、显示操作和在迷宫中四处移动操作, 以及其他一些重要的却与创建迷宫无关的功能。 下页图表示了这些类之间的关系。 每一个房间有四面,我们使用 C + + 中的枚举类型D i r e c t i o n来指定房间的东南西北: enum Direction {North, South, East, West}; S m a l l t a l k的实现使用相应的符号来表示这些方向。 类M a p S i t e是所有迷宫组件的公共抽象类。为简化例子, M a p S i t e仅定义了一个操作E n t e r , 它的含义决定于你在进入什么。如果你进入一个房间,那么你的位置会发生改变。如果你试 图进入一扇门,那么这两件事中就有一件会发生:如果门是开着的,你进入另一个房间。如 第3章 创建型模式 5 5 下载 果门是关着的,那么你就会碰壁。 E n t e r为更加复杂的游戏操作提供了一个简单基础。例如,如果你在一个房间中说“向东 走”,游戏只能确定直接在东边的是哪一个 M a p S i t e并对它调用E n t e r 。特定子类的E n t e r操作将 计算出你的位置是发生改变,还是你会碰壁。在一个真正的游戏中, E n t e r可以将移动的游戏 者对象作为一个参数。 R o o m 是M a p S i t e 的一个具体的子类,而 M a p S i t e 定义了迷宫中构件之间的主要关系。 R o o m有指向其他M a p S i t e对象的引用,并保存一个房间号,这个数字用来标识迷宫中的

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档