C# 具有特定参数的动作的类设计

C# 具有特定参数的动作的类设计,c#,C#,我目前正在开发一个WPF C#系统,其中有许多“处理”模式,例如断头台或转台。对于这些模式中的每一种,都可以对当前处于该模式的每个作业执行操作——这可以是开始,停止,暂停,恢复和完成 目前,我有一个用于“JobAction”的基类,以及扩展了它的Start、Stop等类。在基类中,我有一个if语句来检查当前进程 这似乎可以大大改进,但我不知道如何设计它。有什么想法吗?用装饰图案替换流程if 您将使用断头台ProcessDecorator或转台ProcessDecorator装饰JobAction

我目前正在开发一个WPF C#系统,其中有许多“处理”模式,例如
断头台
转台
。对于这些模式中的每一种,都可以对当前处于该模式的每个
作业执行
操作
——这可以是
开始
停止
暂停
恢复
完成

目前,我有一个用于“JobAction”的基类,以及扩展了它的
Start
Stop
等类。在基类中,我有一个if语句来检查当前进程


这似乎可以大大改进,但我不知道如何设计它。有什么想法吗?

用装饰图案替换流程
if

您将使用
断头台ProcessDecorator
转台ProcessDecorator
装饰
JobAction
。您可以使用IoC容器(如
SimpleInjector
)来决定在合成根目录下使用哪个装饰器

decorator模式允许您向对象添加功能,而不必像典型的类层次结构那样僵化。因此,您可以方便地在将来添加更多流程并合并流程

装饰图案:

将其他职责动态附加到对象。 装饰器提供了一种灵活的替代子类化的方法来扩展 功能

实现将类似于:

public abstract class JobActionBase
{
    public abstract void Start() {}
    public abstract void Stop() {}
    public abstract void Pause() {}
    public abstract void Resume() {}
    public abstract void Complete() {}
}

public class JobAction : JobActionBase
{
    public void Start() {}
    public void Stop() {}
    public void Pause() {}
    public void Resume() {}
    public void Complete() {}
}

public abstract class Decorator : JobActionBase
{
    protected JobActionBase jobAction;

    public void Decorate(JobActionBase jobAction)
    {
        this.jobAction = jobAction;
    }

    public override void Start()
    {
       if (jobAction != null)
       {
           jobAction.Start();
       }
    }
}

public class GuillotineProcessDecorator : Decorator
{
    public override void Start()
    {
        base.Operation();
        // Do something that's Guillotine specific
    }
 }

// Encapsulate this in a factory
JobAction jobAction = new JobAction();
GuillotineProcessDecorator d = new GuillotineProcessDecorator();
d.Decorate(jobAction);
d.Sale();

所以问题是:如何对不同的流程应用相同的操作。。。我明白了?是的,如果这个问题有点不清楚,很抱歉。是否有任何资源可以帮助以我需要的方式实现装饰器模式?我提供了一个实现示例。非常感谢,山姆,看起来很棒