首页 > 其他分享 >状态模式控制设备

状态模式控制设备

时间:2023-04-20 19:25:30浏览次数:28  
标签:状态 Console void 模式 state WriteLine public 设备

状态模式是一种行为型设计模式,它允许对象在内部状态发生变化时改变它的行为。在这个场景中,我们可以将自动、半自动、手动三种工作模式看做是不同的状态,根据不同的状态来执行不同的行为。

下面是使用C#状态模式来编写自动、半自动、手动功能模块程序的示例代码:

  1. 创建一个抽象状态接口,定义三种不同状态对应的方法:
public interface IState
{
    void AutoMode();
    void SemiAutoMode();
    void ManualMode();
}

 

  1. 创建三个具体状态类,实现抽象状态接口中的方法,并根据不同的状态执行不同的行为:
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("正在执行手动操作");
    }
}

 

  1. 创建一个具体的上下文类,它包含了一个状态对象,并提供了切换状态的方法:  
    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();
        }
    }

     

  1. 使用上述类来实现自动、半自动、手动功能模块程序:
  
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

相关文章

  • linux设备树-设备树常用OF操作函数
    ----------------------------------------------------------------------------------------------------------------------------内核版本:linux5.2.8根文件系统:busybox1.25.0u-boot:2016.05-------------------------------------------------------------------------------......
  • Linux设备节点创建方式的演变历史
    引子  遵从"Everythingisafile"的思想,在Linux下想要操作设备的话,是需要通过一类叫做设备节点(devicenode)的特殊文件。设备节点通常位于/dev这个目录下,但是位于其它目录也是可以的。只要翻开一本介绍Linux驱动的书,或者在网上搜索相关的文章,很大概率上会教你在写好驱动代码后......
  • 探索FSM (有限状态机)应用
    我们是袋鼠云数栈UED团队,致力于打造优秀的一站式数据中台产品。我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值。。本文作者:木杪有限状态机(FSM)是计算机科学中的一种数学模型,可用于表示和控制系统的行为。它由一组状态以及定义在这些状态上的转换函数组成。FS......
  • 智慧路灯杆 多功能杆挂载气象监测设备有哪些要求
    智慧路灯杆多功能杆具有强大的设备兼容挂载能力,支持集中挂载包括视频监控、气象监测、环境监测等多类型数据采集设备,实现一杆多用。 由于户外环境变化多端,当出现雨天、大雾天、雪天等恶劣气候时,路面湿滑,能见度降低,容易产生交通事故。而智慧路灯杆多功能杆搭载气象监测设备,可......
  • EasyCVR视频融合平台语音对讲设备端异常的问题分析及解决
    EasyCVR平台属于综合性及融合性较强的视频平台,目前可支持多协议、多类型的海量设备接入与分发,具备视频监控直播、云端录像、录像的检索与回看、存储、智能告警、语音对讲、平台级联、跨系统支持、灵活网络环境配置等视频能力,在线下均有大量落地应用。我们在此前的文章中也介绍过关......
  • WPF中弹出界面在不影响状态栏的情况下占满界面
    举例子:比如在MainView.xaml.cs可以写在Window_Loaded事件中privatevoidWindow_Loaded(objectsender,RoutedEventArgse){this.Left=0.0;this.Top=0.0;this.Height=SystemParameters.WorkArea.Height;this.Width=SystemParameters.Work......
  • ubuntu编译字符设备
    前言创建一个简单的字符设备驱动程序。​ 本文命令的运行基本上都需要root权限,使用root账号,或者在命令前面加上sudo。​ 如果你使用ssh远程连接的服务器进行代码编写。那么不要在root用户下创建文件或者文件夹。这会导致你ssh连接vscode编写代码的权限问题。可以在普通用户创建......
  • 互联网医院:数字化时代下的医疗服务新模式
    随着互联网和数字技术的不断发展,互联网医疗已成为现代医疗领域的新兴趋势。互联网医院是一种基于互联网技术的医疗服务模式,它将医生、患者和医疗资源有机地连接在一起,提供在线咨询、远程诊断、药品配送等医疗服务,为广大患者带来更加便捷、高效、优质的医疗服务。互联网医院系统普遍......
  • 软件开发中的面向对象设计原则和模式
    软件开发中的面向对象设计原则和模式是指在软件设计过程中,遵循一些通用的、经过验证的、有利于提高软件质量和可维护性的指导原则和实践方法。面向对象设计原则和模式的目的是实现高内聚、低耦合、可复用、可扩展、可测试的软件系统。面向对象设计原则是指在定义类、接口和继承......
  • 单例模式:生成只存在一个的实例
    饿汉模式publicclassSingleton{ /*在类装载的时候就完成实例化*/ privatestaticSingletoninstance=newSingleton(); /*私有构造方法,防止被实例化*/ privateSingleton(){ } /*获取单例实例*/ publicstaticSingletongetInstance(){ returninst......