第十一章行为型模式分解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模板方法模式 模式结构 模板方法模式包含如下角色: AbstractClass: 抽象类 ConcreteClass: 具体子类 策略模式 模式结构 策略模式 模式分析 策略模式是一个比较容易理解和使用的设计模式,策略模式是对算法的封装,它把算法的责任和算法本身分割开,委派给不同的对象管理。 策略模式通常把一个系列的算法封装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。 策略模式 模式实现 不使用策略模式的代码: public class Context …… public void algorithm String type ...... if type strategyA //算法A else if type strategyB //算法B else if type strategyC //算法C ...... …… 策略模式 模式实现 重构之后的抽象策略类: public abstract class AbstractStrategy public abstract void algorithm ; 策略模式 模式实现 重构之后的具体策略类: public class ConcreteStrategyA extends AbstractStrategy public void algorithm //算法A 策略模式 模式实现 重构之后的环境类: public class Context private AbstractStrategy strategy; public void setStrategy AbstractStrategy strategy this.strategy strategy; public void algorithm strategy.algorithm ; 策略模式 模式实现 客户端代码片段: …… Context context new Context ; AbstractStrategy strategy; strategy new ConcreteStrategyA ; context.setStrategy strategy ; context.algorithm ; …… 策略模式 模式分析 在策略模式中,应当由客户端自己决定在什么情况下使用什么具体策略角色。 策略模式仅仅封装算法,提供新算法插入到已有系统中,以及老算法从系统中“退休”的方便,策略模式并不决定在何时使用何种算法,算法的选择由客户端来决定。 这在一定程度上提高了系统的灵活性,但是客户端需要理解所有具体策略类之间的区别,以便选择合适的算法,这也是策略模式的缺点之一,在一定程度上增加了客户端的使用难度。 策略模式 例1:锦囊妙计 策略模式 例1:锦囊妙计 环境类:锦囊 策略模式 例1:锦囊妙计 抽象策略类 具体策略类 策略模式 例1:锦囊妙计 客户端:赵云 策略模式 例2:排序算法比较 某系统提供了一个用于对数组数据进行操作的类,该类封装了对数组的常见操作,如查找数组元素、对数组元素进行排序等。 现以排序操作为例,使用策略模式设计该数组操作类,使得客户端可以动态地更换排序算法,可以根据需要选择冒泡排序或选择排序或插入排序,也能够灵活地增加新的排序算法。 策略模式 例2:排序算法比较 策略模式 例2:排序算法比较 环境类 public class ArrayHandler private Sort sortObj; public int[] sort int arr[] sortObj.sort arr ; return arr; public void setSortObj Sort sortObj this.sortObj sortObj; 策略模式 例2:排序算法比较 抽象排序类 public interface Sort public abstract int[] sort int arr[] ; 策略模式 例2:排序算法比较 具体排序类:插入排序 public class InsertionSort implements Sort public int[] sort int arr[] int len arr.length; for int i 1;i len;i++ int j; int temp arr[i]; for j i;j 0;j-- if arr[j-1] temp arr[j] arr[j-1]; else break; arr[j] temp; System.out.println 插入排序 ; return arr

文档评论(0)

119220 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档