JAVA的23种设计模式---策略模式
来源:互联网 发布:助理软件研发工程师 编辑:程序博客网 时间:2024/06/07 07:25
概要:
该文章参考了《设计模式之禅》一书及一些前辈的博客文章
1.该文章阐述了策略模式的基础原理及示例代码;
2.该文章适合初学设计模式的技术人员研习;
3.该文章有许多不足之处,请各位大咖指正,喷子绕道;
正文:
策略模式(政策模式):定义一组算法,将每个算法封装起来,并且使他们之间可以互换。
1.策略模式示例代码实现:
package com.csdn;/** * 方案抽象类 * @author Administrator * */public interface Programme { //执行方案 public void implementationPlan();}
package com.csdn;/** * 方案一 * @author Administrator * */public class Programme1 implements Programme { //执行方案一 @Override public void implementationPlan() { System.out.println("执行方案一"); }}
package com.csdn;/** * 方案二 * @author Administrator * */public class Programme2 implements Programme { //执行方案一 @Override public void implementationPlan() { System.out.println("执行方案二"); }}
package com.csdn;/** * 方案三 * @author Administrator * */public class Programme3 implements Programme { //执行方案一 @Override public void implementationPlan() { System.out.println("执行方案三"); }}
package com.csdn;/** * 方案储存处 * @author Administrator * */public class ProgramStorage { //要使用哪个方案 Programme programme; public ProgramStorage(Programme _programme){ this.programme = _programme; } //执行方案 public void implementationPlan(){ this.programme.implementationPlan(); }}
package com.csdn;/** * 执行人 * @author Administrator * */public class Executor { public static void main(String[] args) { ProgramStorage programStorage; programStorage = new ProgramStorage(new Programme1()); programStorage.implementationPlan(); programStorage = new ProgramStorage(new Programme2()); programStorage.implementationPlan(); programStorage = new ProgramStorage(new Programme3()); programStorage.implementationPlan(); }}
输出:
执行方案一执行方案二执行方案三
注:
a:该示例演示了三套方案,执行人根据情况去方案储存处查看并执行相应方案的场景
b:策略模式包含了封装角色、抽象策略角色、具体策略角色三个角色
c:策略模式重点就是封装角色,他借用了代理模式的思路,差别就是策略模式的封装角色和被封装的策略类不是同一个接口
d:我们一般通过工厂模式来实现策略类的声明
2.枚举策略模式示例代码实现:
package com.csdn;/** * 枚举策略三种方案 * @author Administrator * */public enum Programme { //方案一 PROGRAMME1{ //具体方案执行方法 @Override public void implementationPlan(){ System.out.println("执行方案一"); } }, //方案二 PROGRAMME2{ //具体方案执行方法 @Override public void implementationPlan(){ System.out.println("执行方案二"); } }, //方案三 PROGRAMME3{ //具体方案执行方法 @Override public void implementationPlan(){ System.out.println("执行方案三"); } }; //抽象方案执行方法 public abstract void implementationPlan();}
package com.csdn;/** * 执行人 * @author Administrator * */public class Executor { public static void main(String[] args) { //执行方案一 Programme.PROGRAMME1.implementationPlan(); //执行方案二 Programme.PROGRAMME2.implementationPlan(); //执行方案三 Programme.PROGRAMME3.implementationPlan(); }}
注:
a:它是一个浓缩了策略模式的枚举
阅读全文
0 0
- JAVA的23种设计模式---策略模式
- JAVA开发的23种设计模式之 --- 策略模式
- 我的Java设计模式-策略模式
- java设计模式23_策略模式
- 23种java设计模式之策略模式
- 简述23种java设计模式之策略模式(strategy)
- java 23种设计模式 08策略模式
- Java设计模式 -- 策略模式
- java设计模式-----策略模式
- java 设计模式-策略模式
- java设计模式--策略模式
- java设计模式-策略模式
- java设计模式-策略模式
- java设计模式--策略模式
- java设计模式---策略模式
- java设计模式---策略模式
- java设计模式---策略模式
- 【Java设计模式】策略模式
- windows hexo 搭建教程
- LINUX共享内存使用常见陷阱与分析
- Java面试【静态方面null调用】
- nginx配置
- 【算法题】奇怪的表达式求值
- JAVA的23种设计模式---策略模式
- 算法导论程序30--红黑树的旋转(Python)
- jQuery 属性操作
- BZOJ4403: 序列统计
- .emacs
- Unity3D NGUI UIInput中文输入,插入文本时后面文本被删除问题
- 基于ARM板的打印机程序
- JAVA中常用的加密算法(Hash、base64、MD5、ASC)
- Apache Maven项目提供的Compiler插件详解