Java设计模式之策略模式
来源:互联网 发布:bf是什么意思淘宝 编辑:程序博客网 时间:2024/06/07 18:14
转发请注明原文:http://blog.csdn.net/qq_34911465/article/details/64123687
策略模式
策略模式,从名字上我们看不出什么。不就是策略吗,策略被我们理解为算法的话,那么策略怎么能算是一种模式呢。但是在看了策略模式的资料后,我们可以把它抽象出来,所谓的策略,就是解决问题的方法,解决一个问题有多种方法,我们具体要使用何种方法来解决问题呢,那么就是策略了。抽象的讲,一个策略解决多种问题,我们也不关心这是什么策略,我们只把它叫做策略A,下次又有其他的策略可以解决相同的问题或者不同的问题,我们把新的策略叫做策略B。这就是策略模式的大体内容了吧。
然后我们可以写出抽象的类接口:
public interface Strategy{ public void algorithmInterface(int num);}
然后我们在不同的子类中完成这个接口的方法,就可以完成不同的策略了。这里以判断数字的奇偶为例,如下:
//偶数的策略public class EvenStrategy implements Strategy{ public void algorithmInterface(int num){ System.out.println(""+num+" is even number"); }}
//奇数的策略public class OddStrategy implements Strategy{ public void algorithmInterface(int num){ System.out.println(""+num+" is odd number"); }}
然后我们在一个具体的实现类中使用这些接口来进行操作,就可以使用对实现类中相同的数据成员使用不同的操作了。如下:
public class Context{ private Strategy strategy; private int num; public Context(){ this.strategy = null; } public Context(Strategy strategy){ this.strategy = strategy; } public void setStrategy(Strategy strategy){ this.strategy = strategy; } public void setStrategy(int num){ this.num = num; if(num%2==0)strategy = new EvenStrategy(); else strategy = new OddStrategy(); } public void show(){ strategy.algorithmInterface(num); } public static void main(String[] args){ Context context = new Context(); EvenStrategy eStrategy = new EvenStrategy(); OddStrategy oStrategy = new OddStrategy(); Scanner sc = new Scanner(System.in); int n; System.out.println("Please input some number"); while(sc.hasNextInt()){ n = sc.nextInt(); context.setStrategy(n); context.show(); } }}
如上所示,我们使用策略模式来编写程序,那么就可以方便的扩展程序来应对不同的实现。
策略模式的主要特点:有助于类的解耦合吧,实现类中不需管理如何操作类成员,而由抽象策略类的子类来对成员进行操作,这样在程序维护的时候,我们可以只对实现类进行增添修改,也可以只对策略类以及子类进行修改,这样就将数据和逻辑分离开来。
0 0
- Java设计模式之策略设计模式
- Java设计模式之策略设计模式
- Java设计模式之策略
- Java设计模式之策略模式
- java设计模式之 策略模式
- JAVA 设计模式之 策略模式
- java设计模式之策略模式 Strategy
- java设计模式之策略模式
- java设计模式之策略模式
- 浅谈Java设计模式之---策略模式
- java设计模式之策略模式
- Java设计模式之策略模式
- java设计模式之策略模式
- Java设计模式之策略模式
- Java设计模式之策略模式
- java设计模式之策略模式
- 设计模式之策略模式(java)
- Java设计模式笔记之策略模式
- 初识Shiro
- Spring组合属性
- Android Matrix的用法总结
- Opencv的Kalman滤波器函数二
- 初识linux
- Java设计模式之策略模式
- 自定义控件--描边字体
- Syntax error, insert "EnumBody" to complete ClassBodyDeclarations
- UGUI学习笔记(二) ScrollView相关
- 由自定义标签了解标签是如何起作用的
- Glide解析-图片转换过程
- DIO 数字量电路
- vue在windows环境搭建
- byte数组与int的互转