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

    事物有n种状态,且维护状态变化。

    如:水有 固态、液态、气态 ;小于等于0度,0 到 100 度,等于100度时。

    1)状态类 有共同的父接口,n个不同的状态实现类;

    2)事物类中包含状态类父接口成员变量声明;

    3)事物类中有一定的方法选择 当前处于何种状态;

    以上述为例:


    /**
    * 水状态接口
    * 气态 、 液态 、固态
    */
    public interface IWaterState {
    /**
    * >100 气态
    */
    int GAS = 100;
    /**
    * <0 固态
    */
    int SOLID = 0;

    // int liquid
    public void goState();
    }
    public class GasWater implements IWaterState {
    @Override
    public void goState() {
    System.out.println("气态");
    }
    }
    public class LiquidWater implements IWaterState {
    @Override
    public void goState() {
    System.out.println("液态");
    }
    }
    public class SolidWater implements IWaterState {
    @Override
    public void goState() {
    System.out.println("固态");
    }
    }


    /**
    * 降温 致 固态冰
    */
    public class CoolWaterContext {
    /**
    * 度数
    */
    private int num;

    public CoolWaterContext(int num) {
    if (num >= 100) {
    this.num = 100;
    } else {
    this.num = num;
    }
    }

    public void cool(int num) {
    IWaterState waterState;
    this.num = this.num - num;
    if (this.num >= IWaterState.GAS) {
    //气态
    waterState = new GasWater();
    } else if (IWaterState.SOLID < this.num && this.num < IWaterState.GAS) {
    //液态
    waterState = new LiquidWater();
    } else {
    //固态
    waterState = new SolidWater();
    }
    waterState.goState();
    }
    }
    /**
    * 客户端调用
    */
    public class Execute {
    public static void main(String[] args) {
    CoolWaterContext waterContext = new CoolWaterContext(100);
    waterContext.cool(0);
    waterContext.cool(99);
    waterContext.cool(2);
    }
    }
    结果:





  • 相关阅读:
    Delphi字符串函数大全
    Jackson 工具类使用及配置指南
    Mybatis中javaType和jdbcType对应关系
    Mybatis SqlSessionTemplate 源码解析
    GridView 使用技巧【转】
    Spring JSR250注解
    表格文字不换行
    Sql 分页
    从GridView生成DataTable
    故障诊断:解惑IIS服务器无法添加映射之谜
  • 原文地址:https://www.cnblogs.com/fish-in-sky/p/6545836.html
Copyright © 2011-2022 走看看