zoukankan      html  css  js  c++  java
  • Java设计模式之行为型模式(状态模式)

    状态模式(State)

    1、概述

    ①定义

    状态模式允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

    ②适用场景

    • 一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。
    • 一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。

    ③结构

    • State类为状态类,用来存储一些状态信息。
    • Context类为上下文类,用来存储State。
    • React类为反应器,根据Context中state属性的变化而作出相对应的反应。

    UML图:

    这里写图片描述

    2、实例

    代码已经上了注释,很简单,大家领会一下状态模式的思想。

    /**
     * @author Hanlin Wang
     */
    
    public class StateMode {
        public static void main(String[] args) {
            Context.setState(new State("state1"));
    
            Context.Handler(); 
    
            Context.setState(new State("state2"));
    
            Context.Handler();
    
            //运行结果
            //State 1 mode is running
            //State 2 mode is running
        }
    }
    
    //定义状态类
    class State{
        private String value;
    
        public State(String value){
            this.value = value;
        }
    
        public String getValue() {
            return value;
        }
    
        public void setValue(String value) {
            this.value = value;
        }
    }
    
    //定义上下文类,监视State类的变化
    class Context{
        //注入State
        private static State state;
    
        public static State getState() {
            return state;
        }
    
        public static void setState(State state) {
            Context.state = state;
        }
    
        public static void Handler(){
            String value = state.getValue();
            switch (value) {
            case "state1":
                React.monitor();
                break;
            case "state2":
                React.monitor2();
                break;
            default:
                System.out.println("unknown");
                break;
            }
        }
    }
    
    //定义事件处理类
    class React{
        public static void monitor(){
            System.out.println("State 1 mode is running");
        }
        public static void monitor2(){
            System.out.println("State 2 mode is running");
        }
    }
  • 相关阅读:
    c++关键字static的作用
    react 中echarts-for-react使用 自适应div
    react Echart 自适应问题
    react 中Echarts不自适应问题
    解决 react typescript 中 antD 走马灯 this.slider 报错
    antD 走马灯跳到指定页面
    js 判断语句 或的写法
    ajax 分页点击数据缓存
    react antD moment
    react antD 日期选择
  • 原文地址:https://www.cnblogs.com/wanxi/p/6476229.html
Copyright © 2011-2022 走看看