- 1、本文档共184页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(设计模式工大
观察者模式的参与者 Subject:抽象的主题,即被观察的对象 Observer:抽象的观察者 Concrete Subject:具体被观察对象 Concrete Observer:具体的观察者 注意:在观察者模式中,Subject通过Attach和Detach方法添加或删除所关联的观察者,并通过Notify进行更新,让每个观察者观察到最新的状态 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 班主任老师有电话号码,学生需要知道班主任老师的电话号码以便于在合适时的时候拨打 在这样的组合中,老师是一个被观察者(Subject),学生就是需要知道信息的观察者 当老师的电话号码发生改变时,学生得到通知,并更新相应的电话记录 观察者模式的应用示例 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 观察者模式的应用示例 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 观察者模式分析 应用场景 对一个对象状态的更新,需要其他对象同步更新,而且其他对象的数量动态可变 对象仅需要将自己的更新通知给其他对象而不需要知道其他对象细节 优点 Subject和Observer之间是松偶合的,可以各自独立改变 Subject在发送广播通知时,无须指定具体的Observer,Observer可以自己决定是否要订阅Subject的通知 高内聚、低偶合 缺陷 松偶合导致代码关系不明显,有时可能难以理解 如果一个Subject被大量Observer订阅的话,在广播通知的时候可能会有效率问题 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 迭代子模式的由来 将对象职责分离,最大限度减少彼此之间的耦合程度,从而建立一个松散耦合的对象网络 集合对象拥有两个职责:一是存储内部数据;二是遍历内部数据。从依赖性看,前者为对象的根本属性,而后者既是可变化的,又是可分离的。可将遍历行为分离出来,抽象为一个迭代器,专门提供遍历集合内部数据对象行为。这是迭代子模式的本质 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 迭代子模式的意图和适用性 意图 迭代子模式的目的是设计一个迭代器,提供一种可顺序访问聚合对象中各个元素的方法,但不暴露该对象内部表示 适用场合 访问一个聚合对象的内容而无需暴露其内部表示 支持对聚合对象的多种遍历 为遍历不同的聚合结构提供一个统一接口 (支持多态迭代) Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 享元(Flyweght)模式的意图和适用性 意图:避免大量拥有相同内容的小类的开销,使大家共享一个类(元类) 适用性 一个应用程序使用了大量的对象 冗余使用了大量的对象,造成了很大的存储开销 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 享元(Flyweght)模式的结构 Evaluation only. Created with Aspose.Slides for .NET 3.5 Client Profile 5.2.0.0. Copyright 2004-2011 Aspose Pty Ltd. 享元(Flyweght)模式的参与者 Flyweight:描述一个接口,可接受并作用于外部状态 ConcreteFlyweight:实现Flyweight接口,并为内部状态增加
文档评论(0)