`
xiaoshiyier
  • 浏览: 3405 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 状态模式

阅读更多

public class Context {
    private TestState testState;
    public void setState(TestState state){
        this.testState = state;
    }
    public void changeColor() {
        testState.handle();
    }
}

 

public interface TestState {
   void handle();
}

public class TestState1 implements TestState {
    private Context context;

    public TestState1(Context context) {
        this.context = context;
    }

    @Override
    public void handle() {
        System.out.println("赤");
        context.setState(new TestState2(context));
    }
}

public class TestState2 implements TestState {
    private Context context;

    public TestState2(Context context) {
        this.context = context;
    }

    @Override
    public void handle() {
        System.out.println("橙");
        context.setState(new TestState3(context));
    }
}

 

public class TestState3 implements TestState {
    private Context context;

    public TestState3(Context context) {
        this.context = context;
    }
    @Override
    public void handle() {
        System.out.println("黄");
        context.setState(new TestState1(context));
    }
}

 

public class Client {
    public static void main(String[] args) {
        Context context = new Context();
        context.setState(new TestState1(context));
        for (int i = 0; i < 100; i++) {
            context.changeColor();
        }
    }
}

 

神奇的输出:

 































分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics