原代码:
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"));; } }