




免费预览已结束,剩余52页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
uml建模语言及工具,第 7 章面向对象的设计模式 object-oriented design patterns,-3-,review: object-oriented design principles,lsp:liskov替换原则 the liskov substitution principle ocp:开放-封闭原则 the open-close principle srp:单一职责原则 the single responsibility principle isp:接口隔离原则 the interface segregation principle dip:依赖倒置原则 the dependency inversion principle ,-4-,学习线路图,-5-,内容安排,设计模式 gof设计模式及应用,-6-,设计模式,什么是设计模式? 设计就是解决方案对某个问题的解决 如果某个解决方案对某类问题都很有用 这时就把它总结出来 这就产生了设计模式,-7-,设计模式的基本要素,1. 名称:用于助记,形象表示这个模式 2. 问题:这个模式可以解决什么问题 3. 解决方案:这个模式怎样解决这个问题的步骤与方法 4. 效果:使用这个模式与不使用这个模式有什么区别,它有什么优点和缺点,一个问题可以有多种解法,好的解法都可以找到很多种,每种都有优缺点;所以编程时不要死记方法,应该活学活用,-8-,设计模式的基本思想-1,-9-,设计模式的基本思想-2,1. 松耦合 2. 针对接口编程,而不是针对实现编程 3. 继承、组合、委托、多态、参数化,-10-,内容安排,设计模式 gof设计模式及应用,-11-,经典设计模式:gof,gof(gang of four) 23种经典设计模式,-12-,gof模式分类-1,根据模式的目的(用来完成什么工作的) 创建型模式 结构型模式 行为型模式 根据模式的作用范围(是处理类还是处理对象的): 类模式 对象模式,-13-,gof模式分类-2,创建型模式 创建型类模式将对象的部分创建工作延迟到子类 创建型对象模式将它延迟到另一个对象中 结构型模式 结构型类模式使用继承机制来组合类 结构型对象模式描述了对象间的组装方式 行为型模式 行为型类模式使用继承描述算法与控制法 行为型对象模式则描述一组对象怎样协作完成单个对象无法完成的工作,-创建型模式 这一类型的设计模式, 所要表现的是对象的创建过程及和用户所使用的对象之间的关系.,-15-,单例模式(singleton),单例模式有以下的特点: 单例类只可有一个实例。 单例类必须自己创建自己这惟一的实例。 单例类必须给所有其他对象提供这一实例。,-16-,singleton模式结构,-17-,singleton模式实现,-18-,singleton模式实现,-19-,singleton模式的要点,1.隐藏默认类的构造函数 2.添加一个共享的成员,以引用单独的,实例化的对象 3.创建一个公有函数来创建或返回被引用的对象,-20-,使用singleton模式,适用场景: 1.某个软件组件需要访问数据库,为此,可能希望整个组件只创建一个数据库连接 2.整个系统的主控类,一般只能创建一个.,-21-,singleton模式优缺点,singleton模式是做为“全局变量“的替代品出现的。所以它具有全局变量的特点:全局可见、贯穿应用程序的整个生命期,它也具有全局变量不具备的性质:同类型的对象实例只可能有一个。,-结构型模式 这一类的模式关心类和对象之间怎么组织起来形成大的结构.,-23-,adapter 模式,目的:将一个类的接口转换成客户希望的另外一个接口。adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 实现:类适配器使用多重继承对一个接口与另一个接口进行匹配;对象适配器依赖于对象组合。,-24-,adapter 模式,类适配器结构,-25-,adapter 模式,使用c+实现类适配器 adapter类采用公共方式继承target类,用私有方式继承adaptee类。,-26-,adapter 模式,示例代码: class adaptee / class adaptee public: void specialrequest() ; class target/ class target public: virtual void request() = 0 ; ;,-27-,adapter 模式,/ class adapter class adapter : public target, private adaptee public: virtual void request() specialrequest() ; ;,-28-,adapter 模式,客户端代码: target *p = new adapter() ; p-request() ; /实际上调用的是adaptee:specialrequest(),-29-,adapter 模式,对象适配器结构,-30-,adapter 模式,使用c+实现对象适配器 adapter类采用公共方式继承target类,将adaptee类对象作为自己的私有成员变量。,-31-,adapter 模式,示例代码: class adaptee / class adaptee public: void specialrequest() ; class target / class target public: virtual void request() = 0 ; ;,-32-,adapter 模式,/ class adapter class adapter : public target public: virtual void request() _adaptee.specialrequest() ; private: adaptee _adaptee ; ;,-33-,adapter 模式,客户端代码: target *p = new adapter() ; p-request() ; /实际上调用的是adaptee:specialrequest(),-34-,adapter 模式,适用性: 你想使用一个已经存在的类,而它的接口不符合你的需求。 你想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。 (仅适用于对象adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。,-35-,例子:动物图形编辑器,我们的程序,现成的程序,-36-,策略1对象适配器,-37-,策略1对象适配器,/这是个适配器程序,适配tiger使其具有tookit的接口 public class tigeradaptor implements tookit public tiger thetiger; public tigeradaptor(tiger t) thetiger=t; public void draw() thetiger.paint(); ,-38-,策略2类适配器,-39-,策略2采用继承,public class tigeradaptor1 extends tiger implements tookit public tigeradaptor1() public void draw() super.paint(); ,-40-,设计模式之proxy(代理),例子:windows的快捷方式,-41-,设计模式之proxy(代理),设计模式中定义: 为其他对象提供一种代理以控制对这个对象的访问。 某个客户端不能直接操作到某个对象,但又必须和那个对象有所互动.,-42-,设计模式之proxy(代理),-43-,设计模式之proxy(代理),高三小姐的神貌和本人,悟空扮演并代替高三小姐,-44-,八戒分辨不出真假老婆,-45-,设计模式之facade(门面),-46-,设计模式之facade(门面),门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面(facade)对象进行门面模式提供一个高层次接口,使得子系统更易于使用,-47-,设计模式之facade(门面),一个例子:保安系统一个保安系统由两个录像机,三个电灯,一个遥感器和一个报警器组成操作人员需要经常将这些仪器启动和关闭,-48-,不使用facade(门面),-49-,使用facade(门面),-行为模式 这一类的模式关心的是算法以及对象之间的任务分配. 它所描述的不仅仅是对象或类的设计模式, 还有它们之间的通讯模式.,-51-,模版方法(template method),目的:准备一个抽象类,将部分逻辑用具体方法或者具体构造方法来实现,然后声明一些抽象方法迫使子类实现剩余的逻辑。,-52-,模版方法(template method),例子:计算存款利息假设系统需要支持两种存款账号,即货币市场(money market)账号和定期存款(cd或certifica
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业年度安全培训计划课件
- 空间信息处理技术-洞察及研究
- 2025年社区工作者招聘考试(公共基础知识)试题及答案
- 智能响应复合材料系统-洞察及研究
- 出纳安全培训建议及意见课件
- 朝阳县辅警考试题库2025(有答案)
- 麻醉药品和第一类精神药品使用与管理培训考试试题(附答案)
- 出差人身财产安全培训课件
- 出国行前培训安全考题课件
- HE错误恢复机制-洞察及研究
- 数字化知识培训内容课件
- 养老护理员全套培训课件
- 2025年河南省周口市辅警协警笔试笔试真题(含答案)
- 2025年吉林省机关事业单位工人技术等级考试(理论知识)历年参考题库含答案详解(5卷)
- 四川省成都市2025年中考数学试卷及答案
- 2025-2026学年人教精通版四年级英语上册(全册)教学设计(附目录)
- 计算机应用技术职业发展路径
- 手术部位感染预防与控制标准操作
- 数据退役管理办法
- 徒步小组管理办法
- 2025至2030中国任天堂行业市场深度研究与战略咨询分析报告
评论
0/150
提交评论