




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、设计模式框架与实践怎样成为一个象棋高手?o 第一步,学习基本规则o 第二步,学习取胜的原理o这时,你说你已经学会下棋了o 但是,你要想成为一个象棋高手,除了多下棋和善于总结经验以外,一个重要的途径就是看高手们的棋谱,学习、理解、记忆和应用高手们总结的布局和定式o 这里的布局和定式就相当于我们说的模式,有几百种。. .怎样成为一个软件设计高手?o 第一步,学习基本规则。例如,数据结构、各种算法、编程语言等。o 第二步,学习软件设计的原理和方法。例如,结构程序设计、模块化方法、面向对象的设计方法等。o 这时,你已经可以说学会软件设计了。o 但是,你要想成为一个软件设计的高手,除了多动手和自己善于总
2、结经验以外,一个重要的途径就是看软件设计的高手们的软件,学习、理解、记忆和重复应用软件设计模式。o 这种模式很多,有几百种。. .目标o 了解面向对象设计的基本原则了解面向对象设计的基本原则o 了解设计模式概念及常用的设计模式了解设计模式概念及常用的设计模式o 了解框架的概念及设计原则了解框架的概念及设计原则o 掌握设计模式的学习方法掌握设计模式的学习方法. .内容o 面向对象设计开发的基本原则o 设计模式概念、分类及常用设计模式o 框架概念及设计原则o 设计模式的运用实例o 油品计算框架o 基于的简易报表开发框架o 设计. .面向对象设计原则o 开闭原则o 针对接口编程原则o 高内聚-低耦合
3、原则o 最少知识原则o 类的单一职责原则o 依赖倒置原则o 里氏代换原则. .开闭原则o 扩展系统的行为时,不需要修改以前的代码,而是扩展以前的代码o 针对修改关闭o 针对扩展开放o 提高代码的可维护性. .针对接口编程原则o 接口是高层的抽象o 接口可以隐藏实现的细节o 接口可以清晰指出对象的职责o 接口是实现软件的关键o 松散耦合o 增加重用的可能性. .类的单一职责原则o 一个类只做一件事o 一个类的职责仅仅有一个原因而发生改变o 例:如一个界面展示类夹杂业务逻辑代码或者数据数据库联接代码。. .依赖倒置原则o 抽象不应该依赖于具体o 具体应该依赖于抽象o 抽象依赖于具体,降低了重用的可
4、能性. .结构化编程面向对象的架构. .里氏代换原则o 在所有引用基类的地方,都可以用此基类的子类替换,而不影响程序原来的功能o 违背里氏代换原则将给程序带来不稳定性. . 鸟 飞(); 鹦鹉 学话();. . 鸵鸟 : 鸟 飞()(“鸵鸟不能飞”); (鸟 d)d.飞();此处换成鸵鸟将导致错误. .目标o 了解面向对象设计的基本原则o 了解设计模式概念及常用的设计模式o 了解框架的概念及设计原则o 掌握设计模式的学习方法. .设计模式o 为什么使用设计模式?o 什么是设计模式?o 如何描述一个设计模式?o 如何选择一个设计模式?o 设计模式的分类. .为什么使用设计模式?o 僵化性():设
5、计难以改变。 o 脆弱性():设计易于遭到破坏。 o 牢固性():设计难以重用。 o 粘滞性():难以做正确的事情。 o 不必要的复杂性( ):过分设计。 o 不必要的重复( ):过多的重复。 o 晦涩性():混乱的表达。. .什么是设计模式?o 面向对象设计经验的总结和理论化抽象o 描述了软件设计过程中经常碰到的问题及其解决方案核心。. .如何描述一个设计模式?o 意图o 别名o 动机o 适用性o 结构o 参与者o 协作o 效果o 实现o 代码示例o 已知应用o 相关模式. .如何选择一个设计模式?o 了解每一个设计模式所解决的问题o 了解模式的静态结构o 了解模式的动态结构o 查看当前设计
6、系统易变的部分. .设计模式的分类o 创建者模式o 有关对象创建的模式o 结构型模式o 描述对象构造和组成的方式o 行为模式o 描述一组对象交互的方式. .创建者模式o 简单工厂模式 ( )o 工厂方法 ( )o 抽象工厂 ( )o 建造者模式 ()o 原型模式 ()o 单例模式 (). .工厂模式o 封装对象(产品)的构建过程. .一般的对象创建方式o = ();o = ();o = ();o o o . .使用工厂创建对象. .餐厅里供应的菜谱. .简单工厂o 简单工厂-手工作坊,个体户o 生产面包,米饭,面条o 所有的产品都有一个大师傅制作. .简单工厂示例代码. .调用者代码. .工厂
7、方法o 工厂方法-规模扩大,更专业o 工厂和产品是平行的继承层次结构o 每一种产品都有专门的大师傅制作o 有面包师,面条师,米饭师. .工厂方法类图. .抽象工厂o 产品线的生产方式o 提供西北系列饮食o 西北面包,西北面条,西北米饭o 提供东北系列饮食o 东北面包,东北面条,东北米饭. .抽象工厂类图. .更好的工厂实现方法o 基于反射的实现方式o 采用或数据库保存类的配置信息o 的工厂. .工厂示例. .工厂模式的总结o 简单工厂模式不满足开闭原则o 工厂方法模式对增加新产品支持开闭原则o 抽象工厂对增加新的产品系列满足开闭原则. .建造者模式o 解决一个复杂对象的构造过程o 一碗兰州拉面
8、由面条,汤,肉,香菜组成. .原型模式o 通过复制对象的方式来创建对象o 和均提供了对原型模式的直接支持. .单例模式 = ; () ()( ) = (); ;. .结构模式o 适配器模式适配器模式 ()o 桥接模式桥接模式 ()o 组合模式组合模式 ()o 装饰模式装饰模式 ()o 外观模式外观模式 ()o 代理模式代理模式 ()o 亨元模式亨元模式 (). .适配器模式o 把一个类的接口转变成客户希望的接口o 使原本接口不一致的类提供统一的调用接口. .结构模式o 适配器模式 ()o 桥接模式 ()o 组合模式 ()o 装饰模式 ()o 外观模式 ()o 代理模式 ()o 亨元模式 ().
9、 .组合模式. .装饰模式o 适配器模式 ()o 桥接模式 ()o 组合模式 ()o 装饰模式 ()o 外观模式 ()o 代理模式 ()o 亨元模式 (). .装饰模式的引入-较深层次的继承结构. .装饰模式o 代替深层的继承结构代替深层的继承结构. .示例代码. .结构模式o 适配器模式 ()o 桥接模式 ()o 组合模式 ()o 装饰模式 ()o 外观模式 ()o 代理模式 ()o 亨元模式 (). .外观模式o 外部与一个子系统的通信仅通过一个门面类进行。市场部销售部财务部经理办公室系统集成部客人前台接待员. .行为模式o职责链模式 ( )o命令模式 ()o解释器模式 ()o迭代子模式
10、()o调停者模式 ()o备忘录模式 ()o观察者模式 ()o状态模式 ()o策略模式 ()o模板方法模式 ( )o参观者模式 (). .观察者模式o 发布-订阅o 一个主题,多个观察者o 主题发生变化是,多个观察者被通知o 和都有默认实现. .示例类图. .示例代码. .行为模式o职责链模式 ( )o命令模式 ()o解释器模式 ()o迭代子模式 ()o调停者模式 ()o备忘录模式 ()o观察者模式 ()o状态模式 ()o策略模式 ()o模板方法模式 ( )o观察者模式 (). .策略模式o 针对一组算法,定义一个公共的接口,而将算法的不同实现方式封装到单独的类中. .行为模式o职责链模式 (
11、)o命令模式 ()o解释器模式 ()o迭代子模式 ()o调停者模式 ()o备忘录模式 ()o观察者模式 ()o状态模式 ()o策略模式 ()o模板方法模式 ( )o观察者模式 (). .模板方法模式o 在较高的抽象层次定义一组操作o 定义了抽象操作之间的执行关系. .目标o 了解面向对象设计的基本原则o 了解设计模式概念及常用的设计模式o 了解框架的概念及设计原则o 掌握设计模式的学习方法. .什么是框架?o 解决某一特定领域的问题o 由一组接口和类组成o 好莱坞原则:t , o 冻点( )o 热点( ) o 框架的重用性o 框架的可扩展性. .一个优秀的框架式如何产生的1. 抽象(抽象很难一
12、次实现)2. 类的职责分配3. 代码的重构4. 重复以上步骤. .目标o 了解面向对象设计的基本原则o 了解设计模式概念及常用的设计模式o 了解框架的概念及设计原则o 掌握设计模式的学习方法. .设计模式学习的基础o 熟悉面向对象的基本概念(继承,封装,多态)o 熟悉面向对象的基本原则o 熟悉常用静态关系-泛化,组合,关联. .设计模式学习的方法和原则o 看成熟框架的开源代码,逆向工程o 实践-思考-实践-思考o 一个循环上升的过程o 原则o 了解设计模式能解决哪些问题o 不要为了模式而模式. . ?. .参考资料o设计模式-可复用面向对象软件的基础 Gang of Fouro敏捷软件开发 Robert C. Martino企业应用架构模式 Martin Fowlero重构-改善既有代码的设计 Martin FowleroHead
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论