C#用状态模式实现简单工作流

本文介绍如何使用C#的状态模式实现一个简单的工作流。通过定义不同状态的类及其行为,实现了状态之间的转换,并展示了具体的类图及代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#用状态模式实现简单工作流

一:什么是状态模式

描述:在该模式中,类的行为基于他的状态改变。这种类型的设计模式属于行为型设计模式。在状态模式中我们创建表示各种状态的对象和一个随着状态改变而改变的上下文。

意图:允许对象在内部状态改变时改变他的行为,这个对象本身看起来好像修改了他的类。
主要解决:对象的行为依赖于他的状态,并且可以根据他状态的改变而改变他的行为。
何时使用:在代码中包含大量对象状态有关的条件语句
解决方案:将各种具体的状态抽象出来

二:c#类图

在这里插入图片描述

三:代码实现

3.1:共用抽象类

这里主要定义了一个int类型的sateId用来判断它的当前状态,还有一个Do的共用方法,在该方法中Sate的子类可以实现它特有的业务逻辑

 public abstract class State
    {
   
        public abstract int StateId {
    get; }

        public abstract void Do(Work work, Func<int, bool> func);
    }

3.2:OrderSate类

在该类中我们为它的状态id赋值为1,在判断状态机并没有结束的前提下判断传入的委托是否是该状态机的状态编号之后再进行业务逻辑的处理,之后再为状态机设置下一个Sate,并同样将委托传入下一个sate的Do方法中,如果状态机是结束状态就直接执行finishSate中的Do方法。

 public class OrderState : State
    {
   
        public override int StateId => 1;

        public override void Do(Work work, Func<int, bool> func)
        {
   
            // 判断状态机是否处于结束状态
            if(!work.Finish)
            {
   
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值