状态模式:在一个对象内含有一个父类对象或者一个接口的引用。该引用指向一个子类对象,通过内部的方法改变子类对象的类别,从而改变同一个引用调用同样的方法达到不同的效果。
public class A { private B b=new B(); void buildC(){b=new C();} void buildD(){b=new D();} void buildE(){b=new E();} public static void main(String[] args){ A a=new A(); a.b.say(); a.buildC(); a.b.say(); a.buildD(); a.b.say(); a.buildE(); a.b.say(); } //结果如下: //sya:B //sya:C //sya:D //sya:E } class B{ public void say(){ System.out.println("sya:B"); } } class C extends B { public void say(){ System.out.println("sya:C"); } } class D extends B { public void say(){ System.out.println("sya:D"); } } class E extends B { public void say(){ System.out.println("sya:E"); } }