欢迎来到天天文库
浏览记录
ID:52443427
大小:193.30 KB
页数:28页
时间:2020-03-27
《软件工程面向对象的设计模式.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、面向对象的设计模式北京化工大学计算机系袁国栋¢1.什么是设计模式?¢2.设计模式的描述和分类¢3.设计模式如何解决设计问题¢4.几种常用的设计模式1.什么是设计模式?¢美国C.亚历山大¢每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动¢面向对象程序设计的经验总结1.什么是设计模式?(cont.)¢设计模式四要素¢模式名称(patternname)¢助记名,用一两个词来描述模式的问题、解决方案和效果¢问题(problem)¢应该在何时使用模式¢解决方案(solution)¢描述了设计的组成成分,
2、各组成成分间的相互关系及各自的职责和协作方式—(模板、抽象意义)¢效果(consequences)¢描述了模式应用的效果及使用模式应权衡的问题2.设计模式的描述和分类¢描述设计模式¢模式名和别名¢意图¢设计模式是做什么的?基本原理和意图是什么?¢它解决的是什么样的特定设计问题¢动机¢适用性¢结构¢采用基于对象建模技术(OMT)对模式中的类进行图形描述¢参与者¢相关模式2.设计模式描述和分类(cont.)¢根据目的不同,模式分为三类创建型、结构型和行为型3.设计模式如何解决设计问题¢寻找合适的对象¢决定对象的粒度¢对象的大小和数目¢指定对象接口¢该对象所能接受的全部请求的集
3、合¢确定接口的主要组成部分¢经接口发送的数据类型¢接口中不应包括的内容¢描述对象的实现,etc.4.几种设计模式¢Singleton模式¢Iterator模式¢observer模式4.1Singleton模式¢意图¢保证一个类仅有一个实例,并提供一个访问它的全局访问点¢动机¢对于某些类而言,整个系统中必须只有一个实例¢适用性¢当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时¢当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时。¢结构¢参与者¢Singleton¢实现¢保证一个唯一的实例¢考虑使用静态成员函数+lazyini
4、tialize¢使用global/static对象时可能存在的问题¢创建Singleton类的子类4.2Iterator模式¢意图¢提供一种方法顺序访问一个聚合对象中的各个元素,而又需暴露该对象的内部表示¢别名¢游标cursor¢动机¢聚合对象在不暴露内部结构的前提下,能被访问它的元素、遍历等操作(List)¢不希望类的接口列表中出现大量的遍历操作ListListIterator#index+Count()+First()+Append(inElement)+Next()+Remove(inElement)+IsDone()+CurrentItem()¢关键思想¢将列表的
5、访问和遍历从列表对象中分离出来并放入一个Iterator(迭代器)¢Iterator类定义了访问该列表元素的接口¢Iterator对象负责跟踪当前的元素¢适用性¢访问一个聚合对象的内容而无需暴露它的内部表示¢支持聚合对象的多种遍历¢为遍历不同的聚合结构提供一个统一的接口结构参与者¢Iterator¢Iterator定义访问和遍历元素的接口¢ConcreteIterator¢具体Iterator实现Iterator接口¢对该聚合遍历时跟踪当前位置¢Aggregate¢聚合定义创建响应Iterator对象的接口¢ConcreteAggregate¢具体聚合实现响应的接口4.3
6、observer模式¢一个对象依赖于另一个对象,必须根据后者的状态更新自己的状态¢前者--观察者对象,后者--目标对象¢不但观察者依赖于目标,当目标的状态改变时也要通知观察者,这就出现了双向的依赖。两个对象互相依赖的后果是它们必须一起复用。¢如果一个目标有多个观察者,那么目标也依赖所有观察者,从而目标对象无法独立复用。¢如何消除目标和观察者之间的互相依赖呢?¢意图¢定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新¢别名¢发布—订阅(Publish-Subscribe)实例¢结构参与者¢Subject(目标)¢目标知道它的观察者
7、。一个目标可以有多个观察者¢提供注册和删除观察对象的接口¢Observer(观察者)¢为目标改变时需要获得通知的对象定义一个更新接口¢ConcreteSubject(具体目标)¢将有关状态存入各ConcreteObserver对象¢当其状态改变时,向各个观察者发出通知¢ConcreteObserver(具体观察者)¢维护一个指向ConcreteSubject对象的引用¢存储有关状态,这些状态应与目标的状态保持一致¢实现Observer的更新接口以使自身状态与目标的状态保持一致协作—交互图¢适用性¢当一个抽象模型有两个方面,其中
此文档下载收益归作者所有