您好,欢迎访问一九零五行业门户网

Java设计模式:策略模式及实现方法详解

1.什么是策略模式定义一系列算法,把它们一个个封装起来,并且使他们可以相互替换。
通俗的讲,实现同一个功能,有多种方法或策略。可以把这些方法或策略提取并封装起来。需要使用哪种方法,传对应的对象进来就行。
2.如何实现1)定义一个策略接口,该接口定义若干抽象方法。
2)具体策略,实现策略接口,并实现接口中定义的方法。
3)封装调用类,持有策略接口的引用。当用户需要完成某项功能时,只需向这个类传入相应的策略对象,并调用方法即可。
3.代码实现以文件的加密解密为例做说明。
1)策略接口,定义策略名
/** * 策略接口 */public interface encodestrategy { /** * 加密算法 * @param file */ public abstract void encryptfile(file file); /** * 解密算法 * @param file * @return */ public abstract string decryptfile(file file);}
2)具体策略类1
/** * 具体策略 */public class aesencode implements encodestrategy { @override public void encryptfile(file file) { //省略具体细节 } @override public string decryptfile(file file) { //省略具体细节 return null; }}
具体策略类2
public class base64encode implements encodestrategy { @override public void encryptfile(file file) { //省略具体细节 } @override public string decryptfile(file file) { //省略具体细节 return null; }}
3)封装调用类
/** * 封装调用类,需要用到具体策略,只需传入其对象即可 */public class fileencode{ /** * 策略接口的引用 */ encodestrategy strategy; public fileencode(encodestrategy strategy){ this.strategy = strategy; } //根据传入的具体策略对象,调用其方法 public void encryptfile(file file) { strategy.encryptfile(file); } //根据传入的具体策略对象,调用其方法 public string decryptfile(file file) { return strategy.decryptfile(file); }}
4)测试代码
public class teststrategy { public static void main(string args []){ file file = new file("d:\test.txt"); //调用策略1 实现加密 fileencode fileencode = new fileencode(new aesencode()); fileencode.encryptfile(file); //调用策略2 实现加密 fileencode = new fileencode(new base64encode()); fileencode.encryptfile(file); }}
以上就是java设计模式:策略模式及实现方法详解的详细内容。
其它类似信息

推荐信息