zoukankan      html  css  js  c++  java
  • 设计模式开始--状态模式

    状态模式

    一、定义:

    当一个对象内在状态改变时允许改变行为,实现状态的改变

    二、作用

    主要解决的是当一个状态转换的条件表达式过于复杂的时候,把状态的判断转移到不同状态的一系列类中,把复杂的判断简单化

    三、类图:

    四、实现

    1.work类 用于实现转换状态,状态判断,运行对应状态的程序 同时也是用户调用的接口

    public class Work {
        State state;
        public Work()
        {
            this.state = new Fornoon();
        }
        private int hour;
        public int getHour()
        {
            return this.hour;
        }
        public void setHour(int hour)
        {
            this.hour = hour;
        }
        public void doWork()
        {
            this.state.doWork(this);
        }
        public void setState(State state)
        {
            this.state = state;
        }
    }
    View Code

    2.state类 实际运行的情况,调用work的状态切换

    public abstract class State {
        public abstract void doWork(Work work);
    }
    View Code

    3.state的实现类

    public class Afternoon extends State {
        @Override
        public void doWork(Work work) {
            if(work.getHour() > 12)
            {
                System.out.println("in the afternoon");
            }
            else
            {
                work.setState(new Fornoon());
                work.doWork();
            }
        }
    }
    public class Fornoon extends State {
    
        @Override
        public void doWork(Work work) {
            if(work.getHour() < 12)
            {
                System.out.println("in the morning");
            }
            else
            {
                work.setState(new Afternoon());
                work.doWork();
            }
        }
    
    }
    View Code

    4.客户类 测试类

    public class Client {
        public static void main(String[] args)
        {
            Work work = new Work();
            work.setHour(14);
            work.doWork();
            work.setHour(14);
            work.doWork();
        }
    }
    View Code
  • 相关阅读:
    数组和矩阵问题
    Memcached安装以及PHP的调用
    php函数ob_start()、ob_end_clean()、ob_get_contents()
    Nginx
    电影大全 API接口
    找电影资源最强攻略,知道这些你就牛B了!
    CSS3 图片旋转
    curl网站开发指南
    Redis 集群方案
    从12大技巧、30个案例、99个模板谈怎么写标题
  • 原文地址:https://www.cnblogs.com/sunshisonghit/p/4381430.html
Copyright © 2011-2022 走看看