2.实现
1)定义一个抽象类
2)每一个继承的子类实现一个版本。
前者定义一个抽象类,后者定义一个接口(interface),两者分别把共同的部分放到抽象类和接口中。
Example Code:
抽象类PrintIAbstract提供打印服务,具体的打印服务由子类PrintA和PrintB来实现,PrintContext是上下文类,用户可以通过该类调用打印服务,代码清单如下:
public class PrintContext {
private PrintIAbstract printInterface;
public PrintContext(PrintIAbstract pi){
this.printInterface = pi;
}
public void run(){
this.printInterface.print();
}
public void changeStrategy(PrintIAbstract pi){
printInterface = pi;
}
}
public abstract class PrintIAbstract {
abstract public void print();
}
public class PrintA extends PrintIAbstract{
public void print() {
System.out.println("this is printA");
}
}
public class PrintB extends PrintIAbstract{
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();
}
}