策略模式的使用
首先建立一个接口,用于定义通用意义上的策略可以建立任意多个继承策略接口的类,每个类定义一个策略建立一个用于执行策略的类,该类的构造方法要包含一个策略接口作为输入,这样做的好处在于在构建这个类的实例时,构造函数可以用任意一个继承策略接口的类作为输入,策略的执行方式也可以被统一起来在主函数中构建一个执行策略的类,并在构造这个类时写入要使用的策略,接着只要调用策略执行类中的执行方法便可以执行该策略
//策略模式
public class StrategyPattern {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//随着Context()括号中内容的变化,可以执行不同的策略
//不管策略有多少种,代码的其他部分都不用随之发生变化
System.out.print("第一次使用:");
new Context(new FirstBag()).operate();
System.out.print("第二次使用:");
new Context(new SecondBag()).operate();
System.out.print("第三次使用:");
new Context(new ThirdBag()).operate();
}
}
//由于策略是同一类型的东西,所以先写一个策略的接口
interface Istrategy{
public void operate();
}
//接口写好之后,分别写多个策略类来继承策略接口
class FirstBag implements Istrategy{
public void operate(){
System.out.println("第一个锦囊");
}
}
class SecondBag implements Istrategy{
public void operate() {
System.out.println("第二个锦囊");
}
}
class ThirdBag implements Istrategy{
public void operate(){
System.out.println("第三个锦囊");
}
}
//Context类用于执行策略接口所对应的策略
//调用Context中的operate()来执行策略
class Context{
private Istrategy strategy;
Context(Istrategy strategy){
this.strategy=strategy;
}
public void operate()
{
this.strategy.operate();
}
}