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();
        }
    }
  • 相关阅读:
    Hbase安装配置
    HBASE概念补充
    Hbase概述
    qt creator源码全方面分析(2-8)
    qt creator源码全方面分析(2-7)
    qt creator源码全方面分析(2-6)
    qt creator源码全方面分析(2-5)
    qt creator源码全方面分析(2-3)
    qt creator源码全方面分析(2-2)
    qt creator源码全方面分析(2-4)
  • 原文地址:https://www.cnblogs.com/m2492565210/p/7461565.html
Copyright © 2011-2022 走看看