寻找针对多种可假性条件的设计模式建议

时间:2018-10-15 11:09:50

标签: c# asp.net design-patterns

我们正在开发人力资源ERP。我们有“离开”模块。

其中一项基本功能是请假或请假申请的提交。我们提供了一种方法,可以使用近1000行代码来验证请假申请。此方法中存在if, else and dynamic data conditions的很多。需要指出的是,这种方法来自传统系统。

我计划使用Strategy pattern来分隔业务条件,并将此1000行方法重构为该方法的多个小片段。

在这种情况下,我要求专家建议哪种设计模式更合适。

我们在C#中使用Asp.Net Core 2.0 MVC(依赖于.Net Framework的版本。)

1 个答案:

答案 0 :(得分:0)

基于我有限的上下文,立即想到了一些想法

下面的示例在Java中,但是您可以将其转换为c#

1)如果您的输入类别/父类别相同,那么您可以拥有一个验证器列表,通过这些验证器可以运行您的输入。验证器本身将验证单个因素,并按注入顺序执行。这与策略模式非常相似。

List<Validator> validators= {ValidatorA.class,ValidatorB.class,....};

public void foo(Input input){
for(Validator validator:validators){ // or use lambda
    validator.validate(input);
}

2)如果您的验证也有很多if / else情况,而您想避免一起调用某些验证,那么就想到了模板模式。但是模板模式很难读取/维护(imo),因此我个人更喜欢策略模式。但是在某些情况下,模板模式确实更有意义。因此,您可以评估它是否适合您的用例。