设计模式框架与实践课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《设计模式框架与实践课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 模式 框架 实践 课件
- 资源描述:
-
1、设计模式、框架及其实践 张永吉 .怎样成为一个象棋高手??第一步,学习基本规则 第二步,学习取胜的原理 这时,你说你已经学会下棋学会下棋了 但是,你要想成为一个象棋高手,除了多下棋和善于总结经验以外,一个重要的途径就是看高手们的棋谱,学习、理解、记忆和应用高手们总结的布局和定式?这里的布局和定式就相当于我们说的模式,有几百种。.怎样成为一个软件设计高手??第一步,学习基本规则。例如,数据结构、各种算法、编程语言等。?第二步,学习软件设计的原理和方法。例如,结构程序设计、模块化方法、面向对象的设计方法等。这时,你已经可以说学会软件设计学会软件设计了。?但是,你要想成为一个软件设计的高手,除了多动
2、手和自己善于总结经验总结经验以外,一个重要的途径就是看软件设计的高手们的软件,学习、理解、记忆和重复应用软件设计模式。?这种模式很多,有几百种。.目标?了解面向对象设计的基本原则了解面向对象设计的基本原则 了解设计模式概念及常用的设计模式 了解框架的概念及设计原则 掌握设计模式的学习方法.内容?面向对象设计开发的基本原则 设计模式概念、分类及常用设计模式 框架概念及设计原则 设计模式的运用实例?油品计算框架?基于Jexcel的简易报表开发框架?Junit 设计.面向对象设计原则?开闭原则 针对接口编程原则 高内聚-低耦合原则 最少知识原则 类的单一职责原则 依赖倒置原则 里氏代换原则 .开闭原
3、则?扩展系统的行为时,不需要修改以前的代码,而是扩展以前的代码?针对修改关闭?针对扩展开放?提高代码的可维护性.针对接口编程原则?接口是高层的抽象 接口可以隐藏实现的细节 接口可以清晰指出对象的职责 接口是实现软件pluggable的关键 松散耦合 增加重用的可能性.类的单一职责原则?一个类只做一件事?一个类的职责仅仅有一个原因而发生改变?例:如一个界面展示类夹杂业务逻辑代码或者数据数据库联接代码。.依赖倒置原则?抽象不应该依赖于具体?具体应该依赖于抽象?抽象依赖于具体,降低了重用的可能性.结构化编程 面向对象的架构.里氏代换原则?在所有引用基类的地方,都可以用此基类的子类替换,而不影响程序原
4、来的功能?违背里氏代换原则将给程序带来不稳定性.class 鸟 public void 飞();class 鹦鹉 public void 学话();.class 鸵鸟:鸟 public void 飞()throws(“鸵鸟不能飞”);/public void play(鸟 d)d.飞();/此处换成鸵鸟将导致错误 .目标?了解面向对象设计的基本原则 了解设计模式概念及常用的设计模式了解设计模式概念及常用的设计模式 了解框架的概念及设计原则 掌握设计模式的学习方法.设计模式?为什么使用设计模式?什么是设计模式?如何描述一个设计模式?如何选择一个设计模式?设计模式的分类.为什么使用设计模式??僵化
5、性(Rigidity):设计难以改变。脆弱性(Fragility):设计易于遭到破坏。牢固性(Immobility):设计难以重用。粘滞性(Viscosity):难以做正确的事情。不必要的复杂性(Needless Complexity):过分设计。?不必要的重复(Needless Repetition):过多的重复。?晦涩性(Opacity):混乱的表达。.什么是设计模式??面向对象设计经验的总结和理论化抽象?描述了软件设计过程中经常碰到的问题及其解决方案核心。.如何描述一个设计模式??意图 别名 动机 适用性 结构 参与者?协作 效果 实现 代码示例 已知应用 相关模式.如何选择一个设计模式
6、??了解每一个设计模式所解决的问题 了解模式的静态结构 了解模式的动态结构 查看当前设计系统易变的部分.设计模式的分类?创建者模式?有关对象创建的模式?结构型模式?描述对象构造和组成的方式?行为模式?描述一组对象交互的方式.创建者模式?简单工厂模式(Simple Factory)工厂方法 (Factory Method)抽象工厂 (Abstract Factory)建造者模式 (Builder)原型模式 (Prototype)单例模式 (Singleton).工厂模式?封装对象(产品)的构建过程 .一般的对象创建方式?.Noodle noodle=new Noodle();Bread brea
7、d=new Bread();Rice rice=new Rice();使用工厂创建对象 .餐厅里供应的菜谱 .简单工厂?简单工厂-手工作坊,个体户?生产面包,米饭,面条?所有的产品都有一个大师傅制作.简单工厂示例代码 .调用者代码 .工厂方法?工厂方法-规模扩大,更专业 工厂和产品是平行的继承层次结构 每一种产品都有专门的大师傅制作 有面包师,面条师,米饭师.工厂方法类图 客户端客户端Factory+create():ProductProduct具体工厂具体工厂1具体工厂具体工厂2具体产品具体产品1具体产品具体产品2.抽象工厂?产品线的生产方式?提供西北系列饮食?西北面包,西北面条,西北米饭?
8、提供东北系列饮食?东北面包,东北面条,东北米饭.抽象工厂类图 Factory+createProductA():ProductA+createProductB():ProductB+createProductC():ProductCProductAProductBProductCI型具体产品型具体产品AII型具体产品型具体产品AI型具体产品型具体产品BII型具体产品型具体产品BI型具体产品型具体产品CII型具体产品型具体产品CI型产品工厂型产品工厂II型产品工厂型产品工厂.更好的工厂实现方法?基于反射的实现方式?采用xml或数据库保存类的配置信息?Spring的Bean工厂 .SpringBe
9、an工厂示例.工厂模式的总结?简单工厂模式不满足开闭原则?工厂方法模式对增加新产品支持开闭原则?抽象工厂对增加新的产品系列满足开闭原则.建造者模式?解决一个复杂对象的构造过程?一碗兰州拉面由面条,汤,肉,香菜组成 ProductBuilder+buildPartA()+buildPartB()+buildPartC()+buildPartD()+getProduct():Product具体产品具体产品具体具体Builder1具体具体Builder2.原型模式?通过复制对象的方式来创建对象?Java和.net均提供了对原型模式的直接支持.单例模式 public final class Sprin
展开阅读全文