• 设计模式之GOF23状态模式


    状态模式state

    场景:当具有许多状态并且需要频繁改变时,用这种模式

    -电梯的运行:维修,正常,自动关门,自动开门,向上运行,向下运行,消防状态

    -红绿灯:红灯,黄灯,绿灯

    -企业或政府系统:公文的审批状态

    -网上购物时,订单的状态:下单,已付款,送货中,已收货

    核心:用于解决系统中复杂对象的状态转换及不同状态下行为的封装问题

    结构:Context环境类上下文(维护一个State对象,定义了当前的状态),State抽象状态类,ConcreteState具体状态类(每一个类封装了一个状态对应的行为)

    开发中常见场景:

    -银行系统中账号状态的管理

    -OA系统中公文状态的管理

    -酒店系统中,房间状态的管理

    -线程对象各状态之间的切换

    例子:酒店房间不同状态

    状态图

     

    public interface State {
      void handler();
    }
    class FreeState implements State{
     @Override
     public void handler() {
      System.out.println("空闲房间,可入住");
     }
    }
    class Booked implements State{
     @Override
     public void handler() {
      System.out.println("已预定");
     }
    }
    class Checked implements State{
     @Override
     public void handler() {
      System.out.println("已入住");
     }
    }

    /**
     * 上下文类
     * 房间
     * @author 小帆敲代码
     *
     */
    public class RoomContext {  
      private State state;
      public void setState(State s) {
       state=s;
       System.out.println("修改状态!");
       state.handler();
      }
    }

    public class Client {
     public static void main(String[] args) {
       RoomContext rc=new RoomContext();
       rc.setState(new FreeState());
       rc.setState(new Booked());
     }
    }
  • 相关阅读:
    C++ 类的静态数据成员&静态成员函数
    C++构造函数
    世界末日的梦
    C++ const关键词
    平安夜的礼物
    C++ 友元
    D3D中的光照
    C++网络编程(卷1):学习笔记(一)
    Python 教程阅读笔记(四):数据结构
    Python 教程阅读笔记(三):更多控制流工具
  • 原文地址:https://www.cnblogs.com/code-fun/p/11366145.html
Copyright © 2020-2023  润新知