版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计模式学习探讨适配器模式AdapterPattern桥接模式BridgePattern装饰模式DecoratorPattern整理人:陈缓设计模式学习探讨适配器模式AdapterPatter1前言谁在改变世界?选择单位:政府,企业,教学机构,科研单位……企业是推动世界向前发展的主要动力。企业只会寻找适合世界发展的最好路径,适者生存,不适者灭亡。李彦宏:做企业是改变世界的最好方式。前言谁在改变世界?2学习前的思考为什么要学习?学习是为了更好的改变世界。学习不是简单的继承,重要的是派生。要去其糟粕,取其精华。站在巨人的肩膀上,选择巨人很重要。学习前的思考为什么要学习?3学习的方法怎么样才学习更好?理解背景,知识的应用范围,才能做到理论联系实际。理解作者的本意,目的。批判式的学习。为什么要按照作者的方法去做,这样做有什么好处,不这样做,又有什么更好的方法。理论只有经过实践验证才是知识。知识是严肃的,来不得半点虚假,是理性的世界。和日常生活不同,人和人是感性的世界。学习的方法怎么样才学习更好?4为什么要学习设计模式在人类努力解决的许多领域的成功方案都来源于各种模式(Patterns)。事实上,教育的一个重要目标就是把知识的模式一代一代传下去。下面我们首先看一下学习下棋是怎样用到模式(patterns)。学习开发一个好的程序类似于学习怎样下好棋. 成为一个象棋大师首先学习规则和必要条件:例如,棋子的名称,合法的棋子移动,棋盘的几何形状和方向等然后学习原理:例如某一种棋子的相对价值,中心格的战略价值,威胁的强度等然而要成为象棋大师,你必须要学习其他大师下过的棋局,这些棋局就包含有模式(patterns),这些模式(patterns)必须被理解,记忆和重复的运用,有很多种这样的模式(patterns) 成为一个软件设计大师首先学习规则:例如算法,数据结构和软件语言然后学习原理:例如结构化编程,模块化编程,面向对象编程,泛编程(generalprogramming)等但是要真正的精通软件设计,你必须学习其他大师级的设计,这些设计包含的模式(patterns)必须被理解,记忆和重复的运用有很多种这样的模式(patterns)为什么要学习设计模式在人类努力解决的许多领5怎么选择设计模式考虑设计模式是怎样解决设计问题的 浏览模式的意图 研究模式怎样互相关联 研究目的相似的模式 检查重新设计的原因 考虑你的设计中哪些是可变的怎么选择设计模式考虑设计模式是怎样解决设计问题的 6怎么使用设计模式阅读这个模式的整体概观;尤其是适用性(applicability)及结论(consequences)这两个小节,以确认此模式适合你的问题。回头研究其结构(structure)、参与者(participants)及合作者(collaborations)三小节;以了解此模式中的类别及对象及其关联。研读范例程序代码(samplecode)之范例;可协助你学习如何实作此模式。选择针对应用系统背景有意义的模式参与者(participants)名称;可以让此模式更精确使用在应用系统中。命名方式是结合参与者的名称及应用系统中所使用的名称。定义类别;宣告其界面;建立其继承关系;定义表达数据及对象参考的实例变量,确认现存类别中与此模式有关的类别并相对的修改它。为此应用系统使用之模式的操作定义名称;此操作的名称系依赖此应用系统来命名;利用其责任及合作组合作为依据。实作这些操作来达成其在模式中的责任及合作关系,在实作(implementation)小节内提供相关的指引;同时例程序代码(samplecode)中的程序代码也可协助你。怎么使用设计模式阅读这个模式的整体概观;尤其是适用性(app7适配器模式AdapterPattern意图:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 动机: 有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。适配器模式AdapterPattern意图:8适配器模式AdapterPattern类图:
适配器模式AdapterPattern类图:9桥接模式BridgePattern 意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 动机: 当一个抽象可能有多个实现时,通常用继承来协调它们。抽象类定义对该抽象的接口,而具体的子类则用不同方式加以实现。但是此方法有时不够灵活。继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和重用。桥接模式BridgePattern 意图:10桥接模式BridgePattern类图:桥接模式BridgePattern类图:11装饰模式DecoratorPattern 意图: 动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活。 动机: 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
装饰模式DecoratorPattern 意图:12装饰模式DecoratorPattern类图:
装饰模式DecoratorPattern类图13结束语23种设计模式也不是万能的,更不能说是可以解决任何问题的,能不能适用,关键看你对这些设计模式的理解,另外还有看你程序本身的需要,滥用设计模式也会造成过度设计,反而得不偿失。就象古人用兵,不是熟读兵书就可以百战不殆,呵呵。任何事情都没有绝对,掌握理论或者方法不难,难就难在怎么与现实取得恰到好处的平衡,“过度设计”的现象其实也不少见,至少是局部的“过度”。设计模式就是前人对程序架构的经验总结,是针对当时的需求,当时市场环境。需求在变,市场也在变。要以不变应不变,以变应变,随机应变。计划赶不上变化,是计划本身的问题。好的计划应该考虑变化,包括变化的处理。结束语23种设计模式也不是万能的,更不能说是可以解决任何问题14分享
出色的程序员就像杰出的钢琴家,娴熟的双手,在键盘上翩翩起舞,弹奏出一首首改变世界的美丽动人的音乐。分享15谢谢谢谢!Thanks!谢谢16设计模式学习探讨适配器模式AdapterPattern桥接模式BridgePattern装饰模式DecoratorPattern整理人:陈缓设计模式学习探讨适配器模式AdapterPatter17前言谁在改变世界?选择单位:政府,企业,教学机构,科研单位……企业是推动世界向前发展的主要动力。企业只会寻找适合世界发展的最好路径,适者生存,不适者灭亡。李彦宏:做企业是改变世界的最好方式。前言谁在改变世界?18学习前的思考为什么要学习?学习是为了更好的改变世界。学习不是简单的继承,重要的是派生。要去其糟粕,取其精华。站在巨人的肩膀上,选择巨人很重要。学习前的思考为什么要学习?19学习的方法怎么样才学习更好?理解背景,知识的应用范围,才能做到理论联系实际。理解作者的本意,目的。批判式的学习。为什么要按照作者的方法去做,这样做有什么好处,不这样做,又有什么更好的方法。理论只有经过实践验证才是知识。知识是严肃的,来不得半点虚假,是理性的世界。和日常生活不同,人和人是感性的世界。学习的方法怎么样才学习更好?20为什么要学习设计模式在人类努力解决的许多领域的成功方案都来源于各种模式(Patterns)。事实上,教育的一个重要目标就是把知识的模式一代一代传下去。下面我们首先看一下学习下棋是怎样用到模式(patterns)。学习开发一个好的程序类似于学习怎样下好棋. 成为一个象棋大师首先学习规则和必要条件:例如,棋子的名称,合法的棋子移动,棋盘的几何形状和方向等然后学习原理:例如某一种棋子的相对价值,中心格的战略价值,威胁的强度等然而要成为象棋大师,你必须要学习其他大师下过的棋局,这些棋局就包含有模式(patterns),这些模式(patterns)必须被理解,记忆和重复的运用,有很多种这样的模式(patterns) 成为一个软件设计大师首先学习规则:例如算法,数据结构和软件语言然后学习原理:例如结构化编程,模块化编程,面向对象编程,泛编程(generalprogramming)等但是要真正的精通软件设计,你必须学习其他大师级的设计,这些设计包含的模式(patterns)必须被理解,记忆和重复的运用有很多种这样的模式(patterns)为什么要学习设计模式在人类努力解决的许多领21怎么选择设计模式考虑设计模式是怎样解决设计问题的 浏览模式的意图 研究模式怎样互相关联 研究目的相似的模式 检查重新设计的原因 考虑你的设计中哪些是可变的怎么选择设计模式考虑设计模式是怎样解决设计问题的 22怎么使用设计模式阅读这个模式的整体概观;尤其是适用性(applicability)及结论(consequences)这两个小节,以确认此模式适合你的问题。回头研究其结构(structure)、参与者(participants)及合作者(collaborations)三小节;以了解此模式中的类别及对象及其关联。研读范例程序代码(samplecode)之范例;可协助你学习如何实作此模式。选择针对应用系统背景有意义的模式参与者(participants)名称;可以让此模式更精确使用在应用系统中。命名方式是结合参与者的名称及应用系统中所使用的名称。定义类别;宣告其界面;建立其继承关系;定义表达数据及对象参考的实例变量,确认现存类别中与此模式有关的类别并相对的修改它。为此应用系统使用之模式的操作定义名称;此操作的名称系依赖此应用系统来命名;利用其责任及合作组合作为依据。实作这些操作来达成其在模式中的责任及合作关系,在实作(implementation)小节内提供相关的指引;同时例程序代码(samplecode)中的程序代码也可协助你。怎么使用设计模式阅读这个模式的整体概观;尤其是适用性(app23适配器模式AdapterPattern意图:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 动机: 有时,为复用而设计的工具箱类不能够被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。适配器模式AdapterPattern意图:24适配器模式AdapterPattern类图:
适配器模式AdapterPattern类图:25桥接模式BridgePattern 意图:将抽象部分与它的实现部分分离,使它们都可以独立地变化。 动机: 当一个抽象可能有多个实现时,通常用继承来协调它们。抽象类定义对该抽象的接口,而具体的子类则用不同方式加以实现。但是此方法有时不够灵活。继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立地进行修改、扩充和重用。桥接模式BridgePattern 意图:26桥接模式BridgePattern类图:桥接模式BridgePattern类图:27装饰模式DecoratorPattern 意图: 动态地给一个对象添加一些额外的职责。就扩展功能而言,它比生成子类方式更为灵活。 动机: 当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
装饰模式DecoratorPattern 意图:28装饰模式DecoratorPattern类图:
装饰模式DecoratorPattern类图29结束语23种设计模式也不是万能的,更不能说是可以解决任何问题的,能不能适用,关键看你对这些设计模式的理解,另外还有看你程序本身的需要,滥用设计模式也会造成过度设计,反而得不偿失。就象古人用兵,不是熟读兵书就可以百战
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生活训练小班课程设计
- 施工组织课程设计范文
- 非遗传承研学课程设计
- 钢结构课程设计书
- 机械管道设计课程设计
- 课程设计如何汇报工作
- 骨折的处理课程设计
- 精读阅读课程设计
- 婚礼课程设计
- 餐厅餐具陈列课程设计
- 国际经济与贸易专业生涯人物访谈报告
- “大力弘扬教育家精神”2023征文10篇
- 苏教版数学五年级上册全册教学反思(版本1)
- 创伤伤口包扎术(加压包扎止血法)技术操作考核评分标准
- 被执行人执行和解申请书
- 安全生产隐患识别图集 问题图片和整改图片对比 危险源识别(上)
- 会计学专业导论PPT
- 《扣件式钢管脚手架安全技术规范》JGJ130-2023
- 中建铁路路基排水沟施工方案
- 部编初一语文阅读理解最全答题模板与技巧+专项训练练习题
- 门诊特殊病种和治疗项目申请表
评论
0/150
提交评论