zoukankan      html  css  js  c++  java
  • 状态模式 -- 大话设计模式

    在今天,读书有时是件“麻烦”事。它需要你付出时间,付出精力,还要付出一份心境。--仅以《大话设计模式》来祭奠那逝去的……

    状态模式:当一个对象内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类

    将与特定状态相关的行为局部化,并且将不同状态的行为分割开来

    1.男人吃饱了工作,饿了不想工作

      早上起来,男人吃了饭,大喊一声,我吃饱了,开始工作了;工作了12个小时候,还没吃饭~,大喊一声,我饿了,不想工作了

      定义抽象状态类,以及具体的吃饱和饥饿状态类,定义每个状态对应的行为方式

        /// <summary>
        /// 抽象状态类
        /// </summary>
        public abstract class State
        {
            public abstract void Action(Man man);
        }
    
        /// <summary>
        /// 吃饱状态
        /// </summary>
        public class FullState : State
        {
            public override void Action(Man man)
            {
                Console.WriteLine("我吃饱了,开始工作了");
            }
        }
    
        /// <summary>
        /// 饥饿状态
        /// </summary>
        public class HungeryState : State
        {
            public override void Action(Man man)
            {
                Console.WriteLine("我饿了,不想工作了");
            }
        }
    

       定义男人类(执行具体的业务)

        /// <summary>
        /// 男人类
        /// </summary>
        public class Man
        {
            private State currentState;
    
            public Man(State state)
            {
                this.currentState = state;
            }
    
            public void Work()
            {
                Console.WriteLine("我已经工作了12个小时了,还没吃饭呢~");
    
                this.currentState = new HungeryState();
            }
    
            public void Say()
            {
                currentState.Action(this);
            }
        }
    

       开启场景模拟

            static void Main(string[] args)
            {
                //早上起来,男人吃了饭
                Man man = new Man(new FullState());
    
                //大喊一声,我吃饱了,开始工作了
                man.Say();
    
                //工作了12个小时候,还没吃饭~
                man.Work();
    
                //大喊一声,我饿了,不想工作了
                man.Say();
            }
    
  • 相关阅读:
    oracle外连接 (+)
    Struts 2的架构和运行流程
    struts2.3.15.1 中jsp:include与jsp:forward的用法
    tomcat6.0添加ssi(*.shtml)配置
    DWZ 刷新 dialog
    java将多个连续的空格转化成一个空格
    IE下不支持option的onclick事件
    struts2中的常量
    java.imageIo给图片添加水印
    java集合的互转
  • 原文地址:https://www.cnblogs.com/amywechat/p/4926672.html
Copyright © 2011-2022 走看看