C# 具有特定参数的动作的类设计
我目前正在开发一个WPF C#系统,其中有许多“处理”模式,例如C# 具有特定参数的动作的类设计,c#,C#,我目前正在开发一个WPF C#系统,其中有许多“处理”模式,例如断头台或转台。对于这些模式中的每一种,都可以对当前处于该模式的每个作业执行操作——这可以是开始,停止,暂停,恢复和完成 目前,我有一个用于“JobAction”的基类,以及扩展了它的Start、Stop等类。在基类中,我有一个if语句来检查当前进程 这似乎可以大大改进,但我不知道如何设计它。有什么想法吗?用装饰图案替换流程if 您将使用断头台ProcessDecorator或转台ProcessDecorator装饰JobAction
断头台
或转台
。对于这些模式中的每一种,都可以对当前处于该模式的每个作业执行操作
——这可以是开始
,停止
,暂停
,恢复
和完成
目前,我有一个用于“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();
所以问题是:如何对不同的流程应用相同的操作。。。我明白了?是的,如果这个问题有点不清楚,很抱歉。是否有任何资源可以帮助以我需要的方式实现装饰器模式?我提供了一个实现示例。非常感谢,山姆,看起来很棒