河间网站网站建设,钢管公司网站建设,计算机专业网站设计论文,做个app要多少费用四个角色#xff1a;抽象状态类(State)、具体状态类(ConcreateState)、情景类(Context)、客户端(Client) 抽象状态类(State):提供一个与情景类有关的State行为。 具体状态类(ConcreateState):实现这个行为#xff0c;实现一个状态。 情景类(Context):维护一个State的实例对象…四个角色抽象状态类(State)、具体状态类(ConcreateState)、情景类(Context)、客户端(Client) 抽象状态类(State):提供一个与情景类有关的State行为。 具体状态类(ConcreateState):实现这个行为实现一个状态。 情景类(Context):维护一个State的实例对象并且提供一个客户操作置换状态的接口。 客户端(Client):直接调用情景类操作即可。 实现思路直接调用情景类然后在情景类自动操作或者手动操作置换状态并且取得不同结果。 类图 应用场景文件提交审核入库。 分析文件创建然后提交审核审核通过再入库入库保存完成进入下一流程。 下面我们在控制台程序去演示一下如何使用State Pattern 一、抽象状态类(State) //抽象状态类(State) public abstract class State {public abstract void Submit(FileSub filesub); } 二、具体状态类(ConcreateState) //具体状态类(ConcreateState) public class BeginState : State {public override void Submit(FileSub filesub) { Console.WriteLine(创建文档提交待审核。); filesub.SetState(new CheckState()); } }//具体状态类(ConcreateState) public class CheckState : State {public override void Submit(FileSub filesub) { Console.WriteLine(审核文档准备入库); filesub.SetState(new StorageState()); } }//具体状态类(ConcreateState) public class StorageState : State {public override void Submit(FileSub filesub) { Console.WriteLine(入库完成准备结束此流程); filesub.SetState(new CompleteState()); } }//具体状态类(ConcreateState) public class CompleteState : State {public override void Submit(FileSub filesub) { Console.WriteLine(结束此流程准备创建下一个文件); filesub.SetState(new BeginState()); } } 三、情景类(Context) //情景类(Context) public class FileSub {private State state;public FileSub() { state new BeginState(); }public void SetState(State stateOne) { state stateOne; }public void Submit() { state.Submit(this); } } 四、客户端(Client) //客户端(Client) class Program {static void Main(string[] args) { FileSub file new FileSub(); file.Submit(); file.Submit(); file.Submit(); file.Submit(); Console.ReadLine(); } } 如需源码请点击 StatePattern.rar 下载。