2.实现
1)定义一个接口(interface)
2)每一个子类实现一个版本。
PS:加入每一个版本都有一些相同的部分,那么可以使用回调函数的方法来做这些相同的部分。
Example Code:
打印服务,打印接口类PrintInterface提供PrintA,PrintB两种打印服务,上下文类是PrintContext,用户可以通过它调用打印服务,具体的代码清单如下:
public class PrintContext {
private PrintInterface printInterface;
public PrintContext(PrintInterface pi){
this.printInterface = pi;
}
public void run(){
this.printInterface.print();
}
public void changeStrategy(PrintInterface pi){
printInterface = pi;
}
}
public interface PrintInterface {
abstract public void print();
}
public class PrintA implements PrintInterface{
@Override
public void print() {
System.out.println("this is printA");
}
}
public class PrintB implements PrintInterface{
@Override
public void print() {
System.out.println("this is printB");
}
}
public class maintest {
public static void main(String[] args) {
PrintContext pcContext = new PrintContext(new PrintA());
pcContext.run();
pcContext.changeStrategy(new PrintB());
pcContext.run();
}
}