状态模式是一种行为型设计模式,它允许对象在内部状态发生变化时改变它的行为。在这个场景中,我们可以将自动、半自动、手动三种工作模式看做是不同的状态,根据不同的状态来执行不同的行为。
下面是使用C#状态模式来编写自动、半自动、手动功能模块程序的示例代码:
- 创建一个抽象状态接口,定义三种不同状态对应的方法:
public interface IState { void AutoMode(); void SemiAutoMode(); void ManualMode(); }
- 创建三个具体状态类,实现抽象状态接口中的方法,并根据不同的状态执行不同的行为:
public class AutoState : IState { public void AutoMode() { Console.WriteLine("正在执行自动操作"); } public void SemiAutoMode() { Console.WriteLine("无法切换到半自动模式"); } public void ManualMode() { Console.WriteLine("无法切换到手动模式"); } } public class SemiAutoState : IState { public void AutoMode() { Console.WriteLine("正在执行自动操作"); } public void SemiAutoMode() { Console.WriteLine("正在执行半自动操作"); } public void ManualMode() { Console.WriteLine("无法切换到手动模式"); } } public class ManualState : IState { public void AutoMode() { Console.WriteLine("无法切换到自动模式"); } public void SemiAutoMode() { Console.WriteLine("无法切换到半自动模式"); } public void ManualMode() { Console.WriteLine("正在执行手动操作"); } }
- 创建一个具体的上下文类,它包含了一个状态对象,并提供了切换状态的方法:
public class Context { private IState state; public Context(IState state) { this.state = state; } public void SetState(IState state) { this.state = state; } public void AutoMode() { this.state.AutoMode(); } public void SemiAutoMode() { this.state.SemiAutoMode(); } public void ManualMode() { this.state.ManualMode(); } }
- 使用上述类来实现自动、半自动、手动功能模块程序:
static void Main(string[] args) { // 创建上下文对象,初始状态为自动模式 Context context = new Context(new AutoState()); // 执行自动模式 context.AutoMode(); // 切换到半自动模式 context.SetState(new SemiAutoState()); context.SemiAutoMode(); // 切换到手动模式 context.SetState(new ManualState()); context.ManualMode(); }
在上述示例代码中,我们通过创建不同的状态类来实现不同的功能模块,在具体的上下文类中通过切换状态对象来切换不同的工作模式。这样可以增强代码的可维护性和可扩展性,使得系统更加灵活和可靠。
标签:状态,Console,void,模式,state,WriteLine,public,设备 From: https://www.cnblogs.com/zhoudelun/p/17338033.html