策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。策略模式将不同的算法封装起来,根据客户端的需求,调用不同的对象使用不同的算法,节省了大量的if-else之类的代码量。
public interface Calculate { /* * 算法接口,返回具体的算法 */ public int calnumber(int number); }
public class FirstCalculate implements Calculate { @Override public int calnumber(int number) { // TODO Auto-generated method stub System.out.println("算法一"); return number; } }
public class Context { Calculate cal; /* * 构造函数,设定使用的算法对象 */ public Context(Calculate cal){ this.cal=cal; } /* * 将数据传入对应算法 */ public int SetNumber(int number){ return cal.calnumber(number); } }
public class Client { public static void main(String[] args) { Calculate cal=new SecondCalculate(); Context con=new Context(cal); int result=con.SetNumber(300); System.out.println(result); } }
原文:http://blog.csdn.net/buptgshengod/article/details/18950215