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

    在状态模式(State Pattern)中,类的行为是基于它的状态改变的。

    模式中的角色

      上下文环境(Context):它定义了客户程序需要的接口并维护一个具体状态角色的实例,将与状态相关的操作委托给当前的Concrete State对象来处理。

      抽象状态(State):定义一个接口以封装使用上下文环境的的一个特定状态相关的行为。

      具体状态(Concrete State):实现抽象状态定义的接口。

    State

    package design.pattern.state;
    
    public abstract class State {
        
        protected Context context;
        
        public State(Context context) {
            this.context = context;
        }
        
        public abstract Context handler();
    
    }

    Context

    package design.pattern.state;
    
    public class Context {
        private State state;
        
        public Context() {
            this.state = new ConcreteStateA(this);
        }
        
        public void setState(State state) {
            this.state = state;
        }
        
        public Context action() {
            state.handler();
            return this;
        }
    }

    ConcreteContextA

    package design.pattern.state;
    
    public class ConcreteStateA extends State {
    
        public ConcreteStateA(Context context) {
            super(context);
        }
    
        @Override
        public Context handler() {
            System.out.println("ConcreteStateA");
            context.setState((new ConcreteStateB(context)));
            return context;
        }
        
    }

    ConcreteContextB

    package design.pattern.state;
    
    public class ConcreteStateB extends State {
    
        public ConcreteStateB(Context context) {
            super(context);
        }
    
        @Override
        public Context handler() {
            System.out.println("ConcreteStateB");
            return context;
        }
    
    }

    Client

    package design.pattern.state;
    
    public class Client {
        public static void main(String[] args) {
            new Context().action().action().action();
        }
    }
  • 相关阅读:
    BotVS开发基础—2.7 指标MACD
    BotVS开发基础—2.7 指标MA
    BotVS开发基础—2.5 策略交互
    BotVS开发基础—2.5 绘制图表
    BotVS开发基础—2.5 状态信息显示表格
    BotVS开发基础—2.4 获取订单、取消订单、获取未完成订单
    BotVS开发基础—2.3 下市价单 交易
    BotVS开发基础—2.2 下限价单 交易
    BotVS开发基础—2.1 账户、行情、K线、深度
    python的eval函数
  • 原文地址:https://www.cnblogs.com/m2492565210/p/7461565.html
Copyright © 2011-2022 走看看