3.2 策略模式的UML图,如下:
4.1 策略接口Strategy
public interface IStrategy {
public void getPrice();//抽奖的具体方式
}//具体策略A
public class ConcreteStrategyA implements IStrategy {
@Override
public void getPrice() {
System.out.println("========抽奖方式A=======");
}
}//策略B
public class ConcreteStrategyB implements IStrategy {
@Override
public void getPrice() {
System.out.println("========抽奖方式B=======");
}
}4.3 环境类Context
/**
* 环境类---》生成具体的策略
*/
public class Context {
private IStrategy strategy;
public Context(IStrategy strategy){
this.strategy = strategy;
}
public Context(){}
//利用简单工程方式,生产策略的具体实例
public void createStrategy(String strategy){
try {
this.strategy = (IStrategy) Class.forName(strategy).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
public void getPrice(){
strategy.getPrice();
}
}4.4 客户端Client
public class Client {
public static void main(String[] args) {
doGetPrice();
}
public static void doGetPrice(){
Context context = new Context(new ConcreteStrategyA());
context.getPrice();
//通过反射机制创建策略实例,降低环境类的耦合
Context context2 = new Context();
context2.createStrategy("com.jimi.test.designpattern.strategy.activity.ConcreteStrategyB");
context2.getPrice();
}
}
原文地址:http://blog.csdn.net/guixuecheng/article/details/44854781