一、概述
在面向对象软件设计时,常常碰到某一个对象由于状态的不同而有不同的行为。如果用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)的更多相关文章
-
乐在其中设计模式(C#) - 状态模式(State Pattern)
原文:乐在其中设计模式(C#) - 状态模式(State Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 状态模式(State Pattern) 作者:webabcd 介绍 允 ...
-
二十四种设计模式:状态模式(State Pattern)
状态模式(State Pattern) 介绍允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它所属的类. 示例有一个Message实体类,对它的操作有Insert()和Get()方法, ...
-
状态模式-State Pattern(Java实现)
状态模式-State Pattern 在状态模式(State Pattern)中,类的行为是基于它的状态改变的.当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. State接口 ...
-
设计模式(十二):通过ATM取款机来认识“状态模式”(State Pattern)
说到状态模式,如果你看过之前发布的重构系列的文章中的<代码重构(六):代码重构完整案例>这篇博客的话,那么你应该对“状态模式”并不陌生,因为我们之前使用到了状态模式进行重构.上一篇博客我们 ...
-
[设计模式] 20 状态模式 State Pattern
在GOF的<设计模式:可复用面向对象软件的基础>一书中对状态模式是这样说的:允许一个对象在其内部状态改变时改变它的行为.对象看起来似乎修改了它的类.状态模式的重点在于状态转换,很多时候,对 ...
-
【UE4 设计模式】状态模式 State Pattern
概述 描述 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类. 其别名为状态对象(Objects for States),状态模式是一种对象行为型模式. 有限状态机(FSMs) ...
-
十一个行为模式之状态模式(State Pattern)
定义: 当一个对象有多个状态,并且在每个状态下有不同的行为,可以使用状态模式来在其内部改变状态时改变其行为,而客户端不会察觉状态的改变,仍使用同样的方法或接口与对象进行交互. 结构图: Context ...
-
状态模式(State Pattern)
当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况.把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂 ...
-
大话设计模式--状态模式 State -- C++实现实例
1.状态模式: 当一个对象的内在状态改变时,允许改变其行为,这个对象看起来就像是改变了其类. 状态模式解决的是当控制一个对象状态转换的条件表达式过于复杂, 把状态的判断逻辑转移到表示不同状态的一系列类 ...
随机推荐
-
ASP.NET MVC5+EF6+EasyUI 后台管理系统(59)-BLL层重构
系列目录 前言: 这应该是本系统最后一次重构,将重构BLL层和Model层.来完全取代代码生成器生成的BLL层和DAL层.完全废掉了代码生成器的DAL,BLL,MODEL层. 全自动生成增,删,改 ...
-
Session Tracking Approaches
cookies url rewriting hidden field see also: http://www.informit.com/articles/article.aspx?p=29817&a ...
-
mybatis多数据源配置
项目目录如下: 按照顺序配置吧 首先是配置config jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/a ...
-
Rails (堆栈)<;数据结构>;
题意:<看图片> 解题思路:栈的简单应用: #include<iostream> #include<stack> #include<algorithm> ...
-
【NOIP2009】【CJOJ1687】【洛谷1074】靶形数独
题面 Description 小城和小华都是热爱数学的好学生,最近,他们不约而同地迷上了数独游戏,好胜的他们想用数独来一比高低.但普通的数独对他们来说都过于简单了,于是他们向 Z博士请教,Z 博士拿出 ...
-
css中bfc和ifc
bfc定义:块级格式化上下文,他是一个独立的渲染区域,他规定了这个内部如何布局,并且与这个区域的外部毫不相干.BFC布局规则: 内部的Box会在垂直方向,一个接一个地放置.Box垂直方向的距离由mar ...
-
[Swift]LeetCode331. 验证二叉树的前序序列化 | Verify Preorder Serialization of a Binary Tree
One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, ...
-
Sublime text3 连接sftp/ftp(远程服务器)
1.按下Ctrl + Shift + P调出命令面板2.在输入框中输入Sftp,按回车下载3.建一个新的文件夹放到左边的项目栏中4.右击文件夹,选中SFTP/FTP,点击Map to Remote5. ...
-
React native 无法弹出调试控件的问题
React Native 在debug模式下,可以通过摇动手机,弹出调试选项.但是今天利用了cocoapods 把react native 文件整理后,调试界面就弹不出了,其他功能正常.查了好久,发现 ...
-
websocket activemq
websocket:应用与服务端保持长连接 不停通信 activemq:偶发通信 心跳机制