《设计模式策略模式精品文稿.ppt》由会员分享,可在线阅读,更多相关《设计模式策略模式精品文稿.ppt(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、设计模式策略模式第1页,本讲稿共16页一个简单的例子JOE在游戏公司工作。该游戏公司计划开发一个虚拟鸭子行为仿真系统。该系统可以模拟鸭子的各种行为,如:1 鸭子鸣叫(quack)2 鸭子游泳(swim)等等基本功能艰巨的任务落在了JOE身上。第2页,本讲稿共16页初始解决方案JOE采用标准的面向对象技术建模。具体如右图:一个Duck父类,其他的各种类型的Duck类(绿头鸭,红头鸭等)从该类继承。第3页,本讲稿共16页项目新需求项目经理:由于用户需要,公司要求鸭子要有飞的功能。JOE:OK,没有问题,我只需要在Duck父类里面加入fly()方法就能实现。项目经理:GOOD!第4页,本讲稿共16页
2、BUG?项目经理:JOE,我在项目验收现场,用户给了个简单的DEMO,我看到橡胶(RubberDuck)的鸭子飞了起来?这是你故意的么?JOE:oh,no。他们没有告诉我还有橡胶的鸭子。可能我的程序需要稍微修改一下第5页,本讲稿共16页问题:如何修改程序?程序存在的问题:为了尽量实现代码的复用,JOE用了继承,但这也同时加大了程序的维护难度。第一个解决方案:使用重载!橡胶鸭和木头鸭的实现。第6页,本讲稿共16页解决方案存在的问题 需求说明的不断增加,每加入一种鸭子,都需要不断重载quack()和swim()方法。大大增加程序维护的难度。如何解决呢?第二个解决方案:使用接口(interface)
3、。第7页,本讲稿共16页What do YOU think about this design?第8页,本讲稿共16页What would you do if you are Joe?第9页,本讲稿共16页小结1.单使用继承并不能完美地解决问题。(子类的行为不断变化)2.第二个方案的接口也没有很好地解决代码复用的问题。第10页,本讲稿共16页第一种设计模式(STRATEGY)概念:所谓策略(Strategy)模式,是一种对象行为模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类.第11页,本讲稿共16页使用设计模式解决问题1.分离出程序中变化的部分。Fly()方法和Quack()是Duck类的一部分。现在从Duck()类分离出来。第12页,本讲稿共16页对象行为设计第13页,本讲稿共16页面向实现与面向接口的区别第14页,本讲稿共16页设计模式解决方案第15页,本讲稿共16页代码实现第16页,本讲稿共16页