设计模式之行为模式---状态模式
2016-10-25 11:34
393 查看
一、状态设计模式的特点
当一个对象内部具允许有多个状态改变时,我们将不同的状态提取出来作为一个单独的类来描述一个状态,这样可以很容易的扩展对象,使其具有更多的状态表达,而不会影响到对象本身。一个状态模式的结构图:
State作为一个抽象接口类,向外界提供一个对象,而派生类继承自State实现接口作为不同的状态表示。
Context是一个状态调配类,它根据客户端传递过来的指令判断对象需要执行那种状态,而指定创建那个子类的实例接口。从而实现状态的改变。
二、状态模式的实现
1、在实际生活中我们可以我们的工作看成一个状态模式,在不同的时间段的工作的状态不同。2、状态模式的代码实现
using System; /* zhong de zhuang tai jie kou */ abstract class State { public abstract void Handle (Context context); } class ConcreteStateA :State { public override void Handle (Context context) { if (context.Hourr < 12) { Console.WriteLine ("Is work"); } else { context.Request (new ConcreteStateB ()); context.WriteProgran (); } } } class ConcreteStateB :State { public override void Handle(Context context) { if (context.Hourr < 13) { Console.WriteLine ("Lunch take a nap."); } else { context.Request (new ConcreteStateC ()); context.WriteProgran (); } } } class ConcreteStateC :State { public override void Handle(Context context) { Console.WriteLine ("Home from work"); } } //zhuang tai tiao pei class Context { private State state; //chu shi gong zuo zhuang tai public Context() { state = new ConcreteStateA (); } /*ji lu shi jian de zhuan huan*/ private double hourr; public double Hourr { get{ return hourr;} set{ hourr = value;} } //geng gai dang qian zhuang tai public void Request(State se) { state = se; } public void WriteProgran() { state.Handle (this); } } class WinMain { public static void Main(string[] args) { Context c = new Context (); c.Hourr = 9; c.WriteProgran (); c.Hourr = 12; c.WriteProgran (); c.Hourr = 17; c.WriteProgran (); Console.ReadKey (); } }
运行结果:
8413
相关文章推荐
- 行为设计模式---状态模式(State)
- 设计模式--行为模式--状态模式--Java
- 【设计模式】行为模式之State状态
- 设计模式---行为类型---状态
- [设计模式](十二):备忘录模式(Memento)|状态模式(State) - (两种类状态行为模式)
- 【java设计模式之State(对应每种状态的行为) 】
- Java 设计模式之状态模式的详解(行为模式)
- Java设计模式(22)——行为模式之状态模式(State)
- 设计模式之禅之行为类PK【策略模式VS状态模式】
- 【设计模式学习笔记二十一】【行为模式】【状态模式(State)】
- 设计模式-行为-状态
- [设计模式]状态模式(State)---状态变 行为变
- C++实现设计模式 - STATE(状态)—对象行为模式(第二十个)
- 【设计模式基础】行为模式 - 8 -状态(State)
- 乐在其中设计模式(C#) - 状态模式(State Pattern)
- 深入浅出Java设计模式之状态模式
- [设计模式] 22.State 状态模式
- 设计模式----State(状态)模式
- 设计模式与泡mm的关系之state状态模式及再思考
- GoF 23个经典的设计模式13--行为模式之 责任链模式(未完代续)