状态模式(think in java中的设计模式)

状态模式:在一个对象内含有一个父类对象或者一个接口的引用。该引用指向一个子类对象,通过内部的方法改变子类对象的类别,从而改变同一个引用调用同样的方法达到不同的效果。

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");
    }
}