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

    状态模式

    当一个对象的内在状态发生变化时改变其行为,这个对象看起来像是改变了其类。

    State

    package com.hml.state;
    
    public interface State {
        public void handle(Context c);
    }

    ConcreteStateA

    package com.hml.state;
    
    public class ConcreteStateA implements State{
    
        public void handle(Context c) {
          c.setState(new ConcreteStateB());
        }
    
    }

    ConcreteStateB

    package com.hml.state;
    
    public class ConcreteStateB implements State{
    
        public void handle(Context c) {
          c.setState(new ConcreteStateA());
        }
    
    }

    Context

    package com.hml.state;
    
    public class Context {
        
        private State state;
    
        public State getState() {
            return state;
        }
    
        public void setState(State state) {
            System.out.println(state.getClass().getName());
            this.state = state;
        }
    
        public Context(State state) {
            super();
            this.state = state;
        }
        
        public void request() {
            state.handle(this);
        }
    }

    Test

    package com.hml.state;
    
    public class Test {
        public static void main(String[] args) {
             Context c = new Context(new ConcreteStateA());
             c.request();
             c.request();
             c.request();
             c.request();
             c.request();
        }
    }

    类图

    状态模式的好处是将于特定状态相关的行为局部化,并且将不同的状态的行为分割开来。当一个对象的行为取决于他的状态时,并且必须在运行时刻根据状态改变行为时就可以考虑使用状态模式。

  • 相关阅读:
    js对象
    _proto_和prototype区别
    手写自己的Vuex
    limitPNG压缩图片
    swiper兼容性ie浏览器出现的问题
    postcss-pxtorem
    【Other】Win10防火墙放行Docker(WSL2)端口
    docker容器内使用apt-get报错
    docker+mysql
    docker部署+验证码错误
  • 原文地址:https://www.cnblogs.com/heml/p/4638907.html
Copyright © 2011-2022 走看看