策略设计模式

时间:2021-08-13 22:02:25

原代码:

package 策略设计模式.old;

public class Entry {
	public String entry(String content,String entryType){
		if("md5".equals(entryType)){
			return content+"md5加密";
		}
		if("SHA256".equals(entryType)){
			return content+"SHA256加密";
		}
		if("AES".equals(entryType)){
			return content+"AES加密";
		}
		return null;
	}
}

缺点:不灵活,扩展起来修改源代码

违背了开闭原则

新代码:

1.接口 

package 策略设计模式.should;

public interface Entry {
	public String entry(String content);
}

2.实现类

package 策略设计模式.should;

public class Md5Entry implements Entry {

	@Override
	public String entry(String content) {
		// TODO Auto-generated method stub
		return content+"md5加密";
	}

}


package 策略设计模式.should;

public class SHA256Entry implements Entry {

	@Override
	public String entry(String content) {
		// TODO Auto-generated method stub
		return content+"SHA256加密";
	}

}

3.策略类

package 策略设计模式.should;

public class EntryStrategy {
	private Entry entry;

	public EntryStrategy(Entry entry) {
		super();
		this.entry = entry;
	}
	
	public String entry(String content){
		return entry.entry(content);
	}
}

4.测试类

package 策略设计模式;

import 策略设计模式.should.Entry;
import 策略设计模式.should.EntryStrategy;
import 策略设计模式.should.SHA256Entry;
/**
 * 做一件事情,有多种策略和方法,我们需要选择其中一种时,用此模式.比如,支付.支付宝和微信,比如加密算法.等
 * @author Administrator
 *
 */
public class Test {
	public static void main(String[] args) {
		Entry entry=new SHA256Entry();
		EntryStrategy es=new EntryStrategy(entry);
		System.out.println(es.entry("ccc"));;
	}
}