面向对象设计模式与设计原则资料_第1页
面向对象设计模式与设计原则资料_第2页
面向对象设计模式与设计原则资料_第3页
面向对象设计模式与设计原则资料_第4页
面向对象设计模式与设计原则资料_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、模式的分类(gof提出的23个)Factory MethodAdapter (类)Adapter (对象)CommandBridgeFacadeObserverStrategyBridge(桥梁)模式 最初的设计 11 Bridge(桥梁)模式 需求变化:鸟类要会飞 12 Bridge(桥梁)模式 如果增加一种鸟类“企鹅”呢? 13 Bridge(桥梁)模式 改进方法:对“飞”使用多态 14 Bridge(桥梁)模式 改进方法:再次使用继承 15 Bridge(桥梁)模式 如果增加“游泳”行为呢? 16 设计原则:组合优先 继承复用的优点 可以很容易的修改或扩展父类的实现 18 设计原则:组合

2、优先 如果使用继承来描述: 一旦增加新的汽车种类或用途,都需要 大量改动原有代码 22 设计原则:组合优先 使用“组合”思路考虑问题 “汽车”拥有某种或某些“用途” “汽车”和“用途”独立变化,互不影响 23 设计原则:组合优先区分“Is-A”与“Has-A”设计原则:组合优先问题设计原则:组合优先换一个角度看问题Bridge(桥梁)模式 “发现变化点” 28 Bridge(桥梁)模式 “封装变化点” 变化点1:小鸟一家 29 Bridge(桥梁)模式“封装变化点”Bridge(桥梁)模式“封装变化点”鸟儿拥有飞、游泳的行为 33 Bridge(桥梁)模式Bridge(桥梁)模式结构Bridg

3、e(桥梁)模式应用举例1:“小朋友画画”Bridge(桥梁)模式Bridge(桥梁)模式应用举例2传统的设计Bridge(桥梁)模式应用Bridge模式设计原则:开-闭原则、封装可变性分析设计原则:开-闭原则、封装可变性设计模式对“开-闭”原则的支持设计原则:开-闭原则、封装可变性对“开-闭”原则支持的不好的例子Strategy(策略)模式 桥梁模式 使得两个变化点的独立 55 Strategy(策略)模式 单独看飞的行为的实现 策略模式:封装了一系列算法,使得它 们可以相互替换 效果:算法可以独立变化 56 Strategy(策略):ConcreteStrategy(具体策略):Contex

4、t(上下文):Adapter(适配器)模式 新老代码接口不一致 62 Adapter(适配器)模式 疑问 把老代码修改一下不就可以了么?如下: 63 Adapter(适配器)模式 应用(对象)适配器模式实现接口转换 65 Adapter(适配器)模式Adapter(适配器)模式理解2:重新包装,改变接口Adapter(适配器)模式 类适配器 69 Adapter(适配器)模式结构Adapter(适配器)模式结构Adapter(适配器)模式应用举例1Adapter(适配器)模式使用对象AdapterAdapter(适配器)模式应用举例2Adapter(适配器)模式但是鲁智深并不是这样Adapte

5、r(适配器)模式所以当初鲁达剃度时,众僧说:Adapter(适配器)模式但是长老却说:Adapter(适配器)模式“天星”就是缺省适配器设计原则:里氏代换原则 例子1:“圆是不是椭圆?” 在几何学里,圆是椭圆的一种特殊情况 因此,把椭圆看作父类,把圆作为子类 80 设计原则:里氏代换原则 问题 椭圆有长轴、短轴 圆会完全继承下来 这些对于圆来说毫无意义 类似的:“正方形不是矩形” Circle circle; circle.GetMajorAxis(); 81 设计原则:里氏代换原则 例子2:“企鹅不是鸟的子类” 凡是鸟都会飞 但是企鹅不会 82 设计原则:里氏代换原则例子3设计原则:里氏代换

6、原则Java语言对此类问题的防范正确的方法设计原则:里氏代换原则Java中的反例设计原则:里氏代换原则看看C+ STL是怎么办的Factory Method(工厂方法)模式例子:“去快餐厅吃饭”Factory Method(工厂方法)模式 增加一种新的食物呢? 94 Factory Method(工厂方法)模式传统设计的缺点设计原则:依赖倒置原则为什么说“倒置”传统的依赖方向设计原则:依赖倒置原则 依赖具体的缺点 99 设计原则:依赖倒置原则 依赖抽象 抽象一般不会变动 这样代码不会受易变的具体层影响 100 Factory Method(工厂方法)模式“女娲抟土造人”Factory Meth

7、od(工厂方法)模式简单工厂:Factory Method(工厂方法)模式“女娲举绳造人”Factory Method(工厂方法)模式结构Factory Method(工厂方法)模式工厂方法应用到“快餐店”问题Façade(门面)模式例1:传统的医院:Façade(门面)模式人性化的医院Façade(门面)模式 家庭影院系统: 115 Façade(门面)模式用OO语言描述看电影的辛苦过程Façade(门面)模式 用一个门面对象简化所有细节 120 Façade(门面)模式举例:保安系统Façade(门面)模式使用门面模式设计原则:接口隔离原则 例子:全文搜索引擎 搜索 处理搜索结果 生成索引 128 设计原则:接口隔离原则 接口分割: 129 Command(命令)模式 传统的想法: 132 Command(命令)模式用户要求:按钮可以自定义Command(命令)模式结构例2:餐厅的工作流程þ汉堡þ可乐þ薯条菜单顾客顾客菜单服务员菜单厨师厨师菜单Command(命令)模式结构Command(命令)模式 运作过程: 141 Command(命令)模式 命令模式应用在遥控器上: 144 Command(命令)模式结构:Command(命

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论