package Qiao;
abstract class Abstraction {
protected Implementor imp;
public void setImplementor(Implementor imp){
this.imp=imp;
}
public void operation(){
this.imp.operationImp();
}
}
interface Implementor{
void operationImp();
}
class ConcreteImplementorA implements Implementor{
public void operationImp(){
System.out.println("红颜色");
}
}
class ConcreteImplementorB implements Implementor{
public void operationImp(){
System.out.println("蓝颜色");
}
}
package Qiao;
class RefindAbstraction1 extends Abstraction{
public void operation(){
System.out.print("正方形");
super.operation();
}
public void otherOperation(){
}
}
package Qiao;
class RefindAbstraction2 extends Abstraction{
public void operation(){
System.out.print("圆形");
super.operation();
}
public void otherOperation(){
}
}
package Qiao;
class Test{
public static void main(String[] args){
Implementor cia=new ConcreteImplementorA();
Implementor cib=new ConcreteImplementorB();
Abstraction abstraction1 = new RefindAbstraction1();
abstraction1.setImplementor(cia);
abstraction1.operation();
abstraction1.setImplementor(cib);
abstraction1.operation();
Abstraction abstraction2=new RefindAbstraction2();
abstraction2.setImplementor(cia);
abstraction2.operation();
}
}
运行结果: