设计模式系列 - 状态模式
程序员文章站
2022-05-18 22:31:10
在状态模式中,类的行为时基于它的状态改变而改变。 介绍 状态模式属于行为型模式,通过运行对象在内部状态发生改变时改变它的行为,主要解决的问题是对象的行为严重依赖于它的状态。 类图描述 代码实现 1、定义状态上下文 2、定义行为接口 3、定义行为 4、上层调用 总结 状态模式封装了转换规则,将每种状态 ......
在状态模式中,类的行为时基于它的状态改变而改变。
介绍
状态模式属于行为型模式,通过运行对象在内部状态发生改变时改变它的行为,主要解决的问题是对象的行为严重依赖于它的状态。
类图描述
代码实现
1、定义状态上下文
public class context { private static istate state; public void setstate(istate state) => context.state = state; public istate getstate() => state; }
2、定义行为接口
public interface istate { void doaction(context context); }
3、定义行为
public class startstate : istate { public void doaction(context context) { console.writeline("player is in start state"); context.setstate(this); } public override string tostring() { return "start state"; } } public class stopstate : istate { public void doaction(context context) { console.writeline("player is in stop state"); context.setstate(this); } public override string tostring() { return "stop state"; } }
4、上层调用
class program { static void main(string[] args) { context context = new context(); istate startstate = new startstate(); startstate.doaction(context); console.writeline(context.getstate().tostring()); istate stopstate = new stopstate(); stopstate.doaction(context); console.writeline(context.getstate().tostring()); console.readkey(); } }
总结
状态模式封装了转换规则,将每种状态与对应的的行为进行关联,这样可以使多个环境对象共享一个状态对象,从而减少系统中对象的个数。