状态模式
来源:互联网 发布:常用算法时间复杂度 编辑:程序博客网 时间:2024/06/08 04:11
// State pattern -- Structural example
using System;
namespace DoFactory.GangOfFour.State.Structural
...{
// MainApp test application
class MainApp
...{
static void Main()
...{
// Setup context in a state
Context c = new Context(new ConcreteStateA());
// Issue requests, which toggles state
c.Request();
c.Request();
c.Request();
c.Request();
// Wait for user
Console.Read();
}
}
// "State"
abstract class State
...{
public abstract void Handle(Context context);
}
// "ConcreteStateA"
class ConcreteStateA : State
...{
public override void Handle(Context context)
...{
context.State = new ConcreteStateB();
}
}
// "ConcreteStateB"
class ConcreteStateB : State
...{
public override void Handle(Context context)
...{
context.State = new ConcreteStateA();
}
}
// "Context"
class Context
...{
private State state;
// Constructor
public Context(State state)
...{
this.State = state;
}
// Property
public State State
...{
get...{ return state; }
set
...{
state = value;
Console.WriteLine("State: " +
state.GetType().Name);
}
}
public void Request()
...{
state.Handle(this);
}
}
}
using System;
namespace DoFactory.GangOfFour.State.Structural
...{
// MainApp test application
class MainApp
...{
static void Main()
...{
// Setup context in a state
Context c = new Context(new ConcreteStateA());
// Issue requests, which toggles state
c.Request();
c.Request();
c.Request();
c.Request();
// Wait for user
Console.Read();
}
}
// "State"
abstract class State
...{
public abstract void Handle(Context context);
}
// "ConcreteStateA"
class ConcreteStateA : State
...{
public override void Handle(Context context)
...{
context.State = new ConcreteStateB();
}
}
// "ConcreteStateB"
class ConcreteStateB : State
...{
public override void Handle(Context context)
...{
context.State = new ConcreteStateA();
}
}
// "Context"
class Context
...{
private State state;
// Constructor
public Context(State state)
...{
this.State = state;
}
// Property
public State State
...{
get...{ return state; }
set
...{
state = value;
Console.WriteLine("State: " +
state.GetType().Name);
}
}
public void Request()
...{
state.Handle(this);
}
}
}
- 状态模式(状态变化)
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 我所接触的知识领域
- 打开文件-句柄方式
- 如何用VS2005制作Web安装程序
- 状态模式图
- [原创]Apache Rewrite对apache性能影响的测试
- 状态模式
- 给男人和女人的忠告
- 精妙Sql语句
- 使用VS.NET生成word文档并直接下载
- 如何生成word文档的源码
- SQLServer的COUNT()指令
- 控制表格大小控制表格大小
- 用C#把数据库中的记录按格式写入Word文档中
- 学了ARM开发可以干什么