一、概述
在面向对象软件设计时,常常碰到某一个对象由于状态的不同而有不同的行为。如果用if else或是switch case等方法处理,对象操作及对象的状态就耦合在一起,碰到复杂的情况就会造成代码结构的混乱。在这种情况下,就可以使用状态模式来解决问题。
二、状态模式
状态模式允许一个对象在其内部状态改变时改变它的行为,使对象看起来似乎修改了它的类。
状态模式的结构图如下

Context代表需要改变状态的那个对象,它维护了一个State实例,该实例定义了对象的当前状态。
State定义了一个抽象类或是接口,用以封装与特定状态相关的行为。
ConcreteState实现了State定义的行为。
三、示例
本文实现一个电灯开关状态,以此为例介绍状态模式的应用。
首先定义状态接口

1     public interface LightState
2 {
3 void PressSwitch(Light light);
4 }

接着实现具体的状态

 1     public class LightOn : LightState
2 {
3 public void PressSwitch(Light light)
4 {
5 Console.WriteLine("Light Off");
6 light.State = new LightOff();
7 }
8 }
9
10 public class LightOff : LightState
11 {
12 public void PressSwitch(Light light)
13 {
14 Console.WriteLine("Light On");
15 light.State = new LightOn();
16 }
17 }

然后定义拥有该状态的对象即电灯

 1     public class Light
2 {
3 public LightState State;
4
5 public Light()
6 {
7 State = new LightOff();
8 }
9
10 public void PressSwtich()
11 {
12 State.PressSwitch(this);
13 }
14 }

最后看一下如何调用

1     static void Main(string[] args)
2 {
3 Light light = new Light();
4 light.PressSwtich();
5 light.PressSwtich();
6 light.PressSwtich();
7
8 Console.ReadLine();
9 }

输出结果如下
aaarticlea/png;base64,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" alt="" />

 

C#设计模式——状态模式(State Pattern)的更多相关文章

  1. 乐在其中设计模式(C#) - 状态模式(State Pattern)

    原文:乐在其中设计模式(C#) - 状态模式(State Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 状态模式(State Pattern) 作者:webabcd 介绍 允 ...

  2. 二十四种设计模式:状态模式(State Pattern)

    状态模式(State Pattern) 介绍允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它所属的类. 示例有一个Message实体类,对它的操作有Insert()和Get()方法, ...

  3. 状态模式-State Pattern(Java实现)

    状态模式-State Pattern 在状态模式(State Pattern)中,类的行为是基于它的状态改变的.当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. State接口 ...

  4. 设计模式(十二):通过ATM取款机来认识“状态模式”(State Pattern)

    说到状态模式,如果你看过之前发布的重构系列的文章中的<代码重构(六):代码重构完整案例>这篇博客的话,那么你应该对“状态模式”并不陌生,因为我们之前使用到了状态模式进行重构.上一篇博客我们 ...

  5. [设计模式] 20 状态模式 State Pattern

    在GOF的<设计模式:可复用面向对象软件的基础>一书中对状态模式是这样说的:允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类.状态模式的重点在于状态转换,很多时候,对 ...

  6. 【UE4 设计模式】状态模式 State Pattern

    概述 描述 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类. 其别名为状态对象(Objects for States),状态模式是一种对象行为型模式. 有限状态机(FSMs) ...

  7. 十一个行为模式之状态模式(State Pattern)

    定义: 当一个对象有多个状态,并且在每个状态下有不同的行为,可以使用状态模式来在其内部改变状态时改变其行为,而客户端不会察觉状态的改变,仍使用同样的方法或接口与对象进行交互. 结构图: Context ...

  8. 状态模式(State Pattern)

    当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况.把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂 ...

  9. 大话设计模式--状态模式 State -- C++实现实例

    1.状态模式: 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来就像是改变了其类. 状态模式解决的是当控制一个对象状态转换的条件表达式过于复杂, 把状态的判断逻辑转移到表示不同状态的一系列类 ...

随机推荐

  1. IOS开发 应用程序图标数字角标

    其实实现这个功能很简单,只要调用UIApplication即可.   用法用例:[UIApplication sharedApplication].applicationIconBadgeNumber ...

  2. [玩转微信平台]XML的格式化- 如何去掉XML 文档头和命名空间

    前言 系统要求能够回复微信用户发过来的文本消息.实现中使用的实体对象进行XML的序列化的方式来实现XML消息.   微信平台的回复例子 http://mp.weixin.qq.com/wiki/14/ ...

  3. Linux文件和windows文件在 换行符的区别

    Linux或Unix文件,和windows文件,在来回处理时,如果不注意 换行符的区别,可能导致程序错误!!!深刻的教训.... 在早期的打印机时代,开始新的一行要占用两个字符的时间.如果到了一行的结 ...

  4. 计算A/3,不用除法

    int DividedBy3(int A) { ; ; i <= ; i += ) p += A << i; return (-p); }

  5. Web GIS 离线地图

    Web GIS 离线地图 1,基于瓦片的离线地图下载 博客园 阿凡卢 提供了离线地图的下载工具,下载地址:http://pan.baidu.com/s/1hqvQr7e 具体使用见 参考资料2 阿凡卢 ...

  6. 自己开发的csdn手机客户端

    本人开发的,同步csdn官网新闻和博客内容,支持本地浏览,而且还可以手机上看到博客中的代码! 这是一款同步更新官网最新的资讯信息应用软件. 全新的用户界面,更好的用户体验,数据加载速度得到了进一步优化 ...

  7. SQL数据库对于保存特殊字符的解决办法

    数据库的Char.Vachar类型可以兼容汉字,但特殊字符不行,在保存包含有特殊字符的字符串.正文时,会将特殊符号替换成一个”?”号. 例如: “基础教育课程手机报•特刊” == > “基础教育 ...

  8. truncate/drop表非常慢,怎么办?用硬链接,极速体验

    这个这个,我必须花巨大篇幅,记录下今天清空表记录的英雄壮举,可知道一个drop操作,执行了一下午啊一下午,这是要急出翔的节奏..呵呵,下面开始 我的需求:某表因历史原因,积压了1亿条记录,约占360G ...

  9. 设计模式——"simple Factory"

    顾名思义,工厂模式就是类似于生活中的工厂,可以生产我们想要的东西,回到代码,假如我们需要一个实例,直接从工厂中拿即可. eg:假如我们定义一个“球”类的接口 public interface Ball ...

  10. Android working with Volley

    Volley是google官方推出的一个开源网络访问库,在项目中直接使用它,而不需要写一大堆的重复的代码; 项目主页: https://android.googlesource.com/platfor ...