【设计模式】21、策略模式
2016-03-09 21:54
288 查看
![](http://images2015.cnblogs.com/blog/873394/201603/873394-20160309215203304-352150171.png)
package com.shejimoshi.behavioral.Strategy; /** * 功能:上班的接口 * 时间:2016年3月9日下午8:53:34 * 作者:cutter_point */ public interface ToWork { /** * 上班方式 */ public abstract void workStyle(); }
package com.shejimoshi.behavioral.Strategy; /** * 功能:走步上班 * 时间:2016年3月9日下午8:55:15 * 作者:cutter_point */ public class WalkingWork implements ToWork { @Override public void workStyle() { System.out.println("走步上班"); } }
package com.shejimoshi.behavioral.Strategy; /** * 功能:使用工具去上班 * 时间:2016年3月9日下午8:57:35 * 作者:cutter_point */ public class ToolToWork implements ToWork { @Override public void workStyle() { System.out.println("使用工具去上班"); } }
package com.shejimoshi.behavioral.Strategy; /** * 功能:选择方式 * 时间:2016年3月9日下午9:15:52 * 作者:cutter_point */ public class Select { private ToWork tw; public Select(String type) { switch(type) { case "步行": WalkingWork ww = new WalkingWork(); tw = ww; break; case "使用工具": ToolToWork ttw = new ToolToWork(); tw = ttw; break; } } /** * 执行相应的策略 */ public void getResult() { tw.workStyle(); } }
package com.shejimoshi.behavioral.Strategy; /** * 功能:定义一系列的算法,把他们一个个封装起来,并且使他们可互相替换。 * 适用:许多相关的类仅仅是行为有差异 * 需要使用一个算法的不同变体 * 算法使用客户不该知道的数据 * 时间:2016年3月9日下午8:49:34 * 作者:cutter_point */ public class Test { public static void main(String[] args) { Select st = new Select("步行"); st.getResult(); Select st2 = new Select("使用工具"); st2.getResult(); } }
走步上班 使用工具去上班
相关文章推荐
- 外键约束 以及 数据库中实体的对应关系(1==1,1==n,n==n)
- [android] listview入门
- 【SPOJ-PONY1】Help Dr Whooves【prufer序列】
- PHP时间函数详解
- C语言基础语法
- PHPCMSV9的CKEDITOR编辑器增加行距
- ruby简单的基础 5
- win8.1 安装PL2303串口驱动
- 在未排序数组中找到和为k的最长子数组长度
- 宣布“主权”
- 杭电1007分治法
- 手把手教你使用Git
- 修饰符
- Android进阶——深入浅出Handler(一)
- 一个简单线程池的实现
- 双边滤波算法原理
- uva507 - Jill Rides Again(最大子序列和)
- C++计算绝对值的函数
- win10/win8.1/win8.1默认开启小键盘
- Apache HTTP Server初步安装