策略模式(Strategy)定义:定义了算法家族,分别封装起来,让它们之间可以相互替换,次设计模式让算法的变化,不会影响到使用算法的客户端。
策略模式的实现:定义一个统一的接口,分别用不同的类来实现该接口,在不同的类中是不同的算法。在context类中维护了一个接口的引用,当引用引用不同的对象时调用不同的方法。
code…
支付的方法有三种:现金、wechat和Card,定义一个统一的支付方法。 定义的接口:
public interface PayMoney {
public void payfor();
}
现金的实现类:
public class Cash implements PayMoney {
@Override public void payfor() {
System.out.println("这是通过现金支付的方法");
}
}
其他两个实现类:
public class Card implements PayMoney {
@Override public void payfor() {
System.out.println("这是通过银行卡支付的方法");
}
}
-------------------------------------------------------------
public class WeChat implements PayMoney {
@Override public void payfor() {
System.out.println("这是通过微信支付的方法");
}
}
context类:
public class Context {
private PayMoney payMoney=null;
Context(String string)
{
string="com.strategy."+string;
try {
payMoney=(PayMoney)Class.forName(string).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public void pay()
{
payMoney.payfor();
}
}
main 方法:
public class Main {
public static void main(String[] args) {
Context con=new Context("Card");
con.pay();
}
}
策略模式解析:从概念上来看,所有的算法完成的都是相同的工作,只是实现不同。优点是简化了单元测试,每个算法都有自己的类可以通过自己的接口单独测试。可以消除switch-case语句
上一篇 |
---The End---
| 下一篇 |