zoukankan      html  css  js  c++  java
  • 状态模式

    1.状态模式简介

    在状态模式(State Pattern)中,类的行为是基于它的状态的改变而改变的。这种类型的设计模式属于行为型模式。
    在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

    2.Demo实现

    我们将创建一个 State 接口和实现了 State 接口的实体状态类。Context 是一个带有某个状态的类。

    class Context {
        private String name;
        private State state;
    
        public Context(String name) {
            this.name = name;
            this.state = null;
        }
    
        public String getName() {
            return name;
        }
    
        public void setState(State state) {
            this.state = state;
        }
    
        public State getState() {
            return this.state;
        }
    }
    
    interface State {
        void doAction(Context context);
        String toString();
    }
    
    
    class StartState implements State {
        public void doAction(Context context) {
            context.setState(this);
            System.out.println("context " + context.getName() + "'s state is " + toString());
        }
        public String toString() {
            return "starting";
        }
    }
    
    class StopState implements State {
        public void doAction(Context context) {
            context.setState(this);
            System.out.println("context " + context.getName() + "'s state is " + toString());
        }
        public String toString() {
            return "stoping";
        }
    }
    
    
    public class StatePatternDemo {
        public static void main(String args[]) {
            Context con1 = new Context("Computer1");
            Context con2 = new Context("Computer2");
            
            StartState startState = new StartState();
            startState.doAction(con1);
    
            StopState stopeState = new StopState();
            stopeState.doAction(con1);
    
            startState.doAction(con2);
            stopeState.doAction(con2);
        }
    }

    参考:http://www.runoob.com/design-pattern/state-pattern.html

  • 相关阅读:
    bzoj2791
    poi2012完成
    bzoj2795
    bzoj2790
    spring cloud 学习资源
    hystrix学习
    idea live template
    intellij-maven-imports-have-broken-classpath
    springboot elk实时日志搭建
    idea author模板
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/10732895.html
Copyright © 2011-2022 走看看