一、概述
在面向对象软件设计时,常常碰到某一个对象由于状态的不同而有不同的行为。如果用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. android:themes.xml

    <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2006 The Andr ...

  2. asp.net 的page 基类页面 做一些判断 可以定义一个基类页面 继承Page类 然后重写OnPreLoad事件

    public class BasePage:Page protected override void OnPreLoad(EventArgs e){     base.OnPreLoad(e);    ...

  3. memcached 源码阅读笔记

    阅读 memcached 最好有 libevent 基础, memcached 是基于 libevent 构建起来的. 通由 libevent 提供的事件驱动机制触发 memcached 中的 IO ...

  4. 关于 Enum.TryParse 方法的一个小坑…

    今天在测试导入数据的时候,突然发现本应该是枚举内容的数据,导入了进了一个很大的不在枚举定义内的数字. 记得当时用的是 Enum.TryParse 方法对导入的文本进行校验的,于是调试了一下,发现果然是 ...

  5. 理解netty对protocol buffers的编码解码

    一,netty+protocol buffers简要说明 Netty是业界最流行的NIO框架之一优点:1)API使用简单,开发门槛低:2)功能强大,预置了多种编解码功能,支持多种主流协议:3)定制能力 ...

  6. ffrpc相关文章列表

    ffrpc 是异步c++通信库.可以说是传统rpc模式和zeromq模式的一个结合,采用broker模式封装client和server之间的拓扑关系,而client和server的通信仍然按照请求应答 ...

  7. Java的wait(), notify()和notifyAll()使用小结

    wait(),notify()和notifyAll()都是java.lang.Object的方法: wait(): Causes the current thread to wait until an ...

  8. C8051 PCA实现红外遥控接收

    这里使用的处理器是C8051F005.红外接收头接处理器引脚,中断方式接收按键数据. 一 PCA介绍 1.1 PCA 可编程计数器阵列(PCA)提供增强的定时器功能,与标准8051计数器/定时器相比, ...

  9. 关于IT概念的一些思考

    同事提及“软件工程.软件生命周期.项目管理.CMMI.IPD.RUP.UML及UML建模.面向对象分析与设计.需求分析.系统分析与设计……等等,它们到底是什么?它们之间有什么关系?”   下面是个人见 ...

  10. CLR via C#深解笔记四 - 方法、参数、属性

    实例构造器和类(引用类型) 构造器(constructor)是允许将类型的实例初始化为良好状态的一种特殊方法.构造器方法在“方法定义元数据表”中始终叫.ctor. 创建一个引用类型的实例时: #1, ...