欢迎来到天天文库
浏览记录
ID:49417038
大小:2.40 MB
页数:16页
时间:2020-02-06
《设计模式-策略模式(strategy).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、设计模式策略模式(Strategy)一个简单的例子JOE在游戏公司工作。该游戏公司计划开发一个虚拟鸭子行为仿真系统。该系统可以模拟鸭子的各种行为,如:1鸭子鸣叫(quack)2鸭子游泳(swim)等等基本功能艰巨的任务落在了JOE身上。初始解决方案JOE采用标准的面向对象技术建模。具体如右图:一个Duck父类,其他的各种类型的Duck类(绿头鸭,红头鸭等)从该类继承。项目新需求项目经理:由于用户需要,公司要求鸭子要有飞的功能。JOE:OK,没有问题,我只需要在Duck父类里面加入fly()方法就能实现。项目经理:GOOD!BUG?项目经理:JOE,我在项目验
2、收现场,用户给了个简单的DEMO,我看到橡胶(RubberDuck)的鸭子飞了起来?这是你故意的么?JOE:oh,no。他们没有告诉我还有橡胶的鸭子。可能我的程序需要稍微修改一下……问题:如何修改程序?程序存在的问题:为了尽量实现代码的复用,JOE用了继承,但这也同时加大了程序的维护难度。第一个解决方案:使用重载!橡胶鸭和木头鸭的实现。解决方案存在的问题需求说明的不断增加,每加入一种鸭子,都需要不断重载quack()和swim()方法。大大增加程序维护的难度。如何解决呢?第二个解决方案:使用接口(interface)。WhatdoYOUthinkaboutt
3、hisdesign?WhatwouldyoudoifyouareJoe?小结1.单使用继承并不能完美地解决问题。(子类的行为不断变化)2.第二个方案的接口也没有很好地解决代码复用的问题。第一种设计模式(STRATEGY)概念:所谓策略(Strategy)模式,是一种对象行为模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类.使用设计模式解决问题1.分离出程序中变化的部分。Fly()方法和Quack()是Duck类的一部分。现在从Duck()类分离出来。对象行为设计面向实现与面向接口的区别设计模式解决方案代码实现……
此文档下载收益归作者所有