- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11章设计模式展望
第11章 设计模式展望
本书讲解了设计模式,同时也介绍了C#3.0这一现代编程语言的一些高级特性。在很多时候,我们都会发现语言对模式的实现提供了大量帮助。在最后这一章,我们将回顾一下这些模式以及它们所需要的语言特性,然后展望一下研究人员正在为语言的下一轮迭代准备什么东西。
模式总结
现在是作一下总结的时候了,我们将总结本书中所有的设计模式以及用于实现它们的语言特性。有必要重复一下:在某些情形中,本书中的模式实现跟基于Java、C++或早期版本的C#语言的传统实现形式相比,有很大的差别。因此,你应该把表11-1的“语言特性”一栏理解为“现代的、适当的、合乎需要的”,而不是“固定的、标准的、唯一的”。这个表格对本书中所有的理论代码作了一次有用的比较,你也可以在本书的网站上(http://patterns.cs.up.ac.za)找到这些代码。第四栏中斜体的语言特性是用在其它的可选实现方案或示例代码中的,它们在基本的理论代码中没有用到。大多数语言特性都以复数形式给出(原作者在列举语言特性时,使用的都是英文单词的复数形式,译者注),但实际使用时可能只用到某种特性的单个实例,这取决于系统的尺寸。
这一表格是按照语言特性的难易程度排列的,因此你可以得到哪种模式基于语言知识更易实现的直观感觉;但是,不要把这一标准跟模式本身的难易相混淆。我个人的经验是,出现在表格上半部分的适配器(Adapter)和访问者(Visitor)模式,是两种实现起来颇具挑战性的模式。其难点主要在于类型之间的相互作用,因为这两种模式的目标都是类型解耦。在C#这种提供严格类型检查的语言中,即使不考虑泛型,也需要相当细心才能确保参数和对象实例的正确匹配。
表11-1 模式和语言特性总结
(第二栏为译者加,以方便对照)
模式 模式(英文) 语言特性 可选的和示例中使用的 抽象工厂 Abstract Factory 接口 泛型、泛型约束 Bridge 接口 扩展方法 Builder 接口 泛型、泛型约束 Decorator 接口 Factory Method 接口 Adapter 接口、继承委托、匿名函数、线程、事件 Proxy 接口、私有访问 集合类 State 接口、选择语句 Strategy 接口、选择语句 泛型、可空类型 Interpreter 递归、选择语句 Visitor 接口、递归 反射 Singleton 私有访问、嵌套类、静态属性 Template Method 方法重 命令 Command 委托 Mediator 委托 线程 Observer 接口、委托、事件 线程 Flyweight 接口、结构、集合类、索引器 隐式类型推导、初始化式、匿名类型 Memento 序列化、集合类、索引器 Prototype 克隆、序列化、集合类、索引器 Chain of Responsibility 泛型、异常 枚举类型、初始化式 Composite 接口、集合类、泛型、属性 Iterator 枚举器、foreach、查询表达式 (Linq) 泛型、递归
表11-2 模式交互
模式 与其交互或被其支持的模式 抽象工厂 桥接, 工厂方法, 原型, 单例 适配器 桥接 抽象工厂 生成器 组合 责任链 组合 命令 备忘录, 组合 组合 生成器, 装饰器, 享元, 解释器, 访问者, 责任链, 命令, 迭代器 装饰器 组合, 策略 工厂方法 抽象工厂, 模板方法 享元 组合, 解释器, 策略, 状态 解释器 组合, 享元, 访问者 迭代器 访问者, 备忘录, 组合 中介 观察者 备忘录 迭代器, 命令 观察者 中介 原型 抽象工厂 代理 状态 享元 策略 装饰器, 享元, 模板方法 模板方法 工厂方法, 策略 访问者 迭代器, 组合, 解释器
表11-3 演示模式的示例
Example 博客 观察者 聊天室 中介 课程成绩评估 访问者、解释器 家族树 迭代器 Gucci 和Poochy (产品制造) 抽象工厂、生成器 菜单系统 命令 Mirrors 解释器 相片装饰器、相片库、相片组、相片集合 装饰器、组合、享元、外观、原型、适配器 RCP游戏、Tic-Tac-Toe游戏 状态、备忘录 海鸟飞机 适配器 排序演示器 策略、模板方法 鳄梨采购 工厂方法 SpaceBook、Openbook、Coolbook 代理、桥接、适配器 Trusty Bank 责任链 练习
总结和制表是从诸多模式中理出头绪的有效方法。你可以尝试下面两个任务:
1. 制作一个模式表格,分别用一句话描述每种模式的任务;
2. 制作一个模式表格,列举每种模式的参
文档评论(0)