using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 状态模式
{
    public interface State
    {
        void doSomething(Person p);
    }

public class Mstate : State
    {
        public void doSomething(Person p)
        {
            if (p.hours == 7)
            {
                Console.WriteLine("吃早餐");
            }
            else
            {
                p.state = new Lstate();
                p.doSomething();
            }
        }
    }
        public class Lstate : State
    {
        public void doSomething(Person p)
        {
            if (p.hours == 12)
            {
                Console.WriteLine("吃午餐");
            }
            else
            {
                p.state =new Nstate();
                p.doSomething();
            }
        }
    }
     public class Nstate : State
    {
        public void doSomething(Person p)
        {
            if (p.hours == 18)
            {
                Console.WriteLine("吃晚餐");
            }
            else
            {
                p.state =new NOstate();
                p.doSomething();
            }
        }
    }
        public class NOstate : State
    {
        public void doSomething(Person p)
        {
            Console.WriteLine("没得吃");
          
             
        }
    }
    public class Person
    {
        public State state { get; set; }

public int hours { get; set; }

public Person()
        {
            state=new Mstate();
        }

public void doSomething()
        {
            state.doSomething(this);
            state=new Mstate();
        }
    }

class Program
    {
        static void Main(string[] args)
        {
            Person p=new Person();
            p.hours = 7;
            p.doSomething();
            p.hours = 12;
            p.doSomething();
            p.hours = 18;
            p.doSomething();
            p.hours = 8;
            p.doSomething();
            p.hours = 7;
            p.doSomething();
            Console.ReadKey();
        }
    }
}

最新文章

  1. 最常用的截取函数有left,right,substring
  2. 写一个函数,将一个int型的数组做为参数传入,使用指针返回两个结果:最大值和最小值
  3. A Case Study -- Performance Evaluation of a DRAM-Based Solid State Disk
  4. jsp文件怎么打开呢
  5. OD: Ring0 & Kernel
  6. 【转】在ubuntu12.04中安装wine和sourceinsight
  7. Mirror–使用证书配置镜像模板
  8. 浅谈JavaScript的apply和call语句
  9. Linux系统打开文件最大数量限制(进程打开的最大文件句柄数设置)
  10. swift-UIPickerView(选择控件)
  11. [转]分别使用Node.js Express 和 Koa 做简单的登录页
  12. 增删改查的SSM小项目
  13. 在Power BI报表和仪表板中显示刷新日期\时间
  14. 10.2.0.5环境dg测试logminer挖掘日志分析
  15. 利用PHPExcel读取excel文件
  16. mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下)
  17. Oracle Data Guard 重要配置参数
  18. python基础之if语句
  19. win10中打开SQL Server配置管理器方法
  20. 【Leetcode】445. Add Two Numbers II

热门文章

  1. C#修改注册表
  2. [C#] DataTable转成List集合
  3. 使用mongoperf评估磁盘随机IO性能
  4. BNF 和 ABNF 扩充巴科斯范式 了解
  5. cocos2dx切换场景
  6. Maven(4)-利用intellij idea创建maven 多模块项目
  7. sublime Text 3安装sublimecodeIntel插件
  8. while循环-for循环
  9. servlet的登陆案例
  10. Java HashMap 遍历方式探讨