我们正在开发人力资源ERP。我们有“离开”模块。
其中一项基本功能是请假或请假申请的提交。我们提供了一种方法,可以使用近1000行代码来验证请假申请。此方法中存在if, else and dynamic data conditions
的很多。需要指出的是,这种方法来自传统系统。
我计划使用Strategy pattern
来分隔业务条件,并将此1000行方法重构为该方法的多个小片段。
在这种情况下,我要求专家建议哪种设计模式更合适。
我们在C#中使用Asp.Net Core 2.0 MVC(依赖于.Net Framework的版本。)
答案 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),因此我个人更喜欢策略模式。但是在某些情况下,模板模式确实更有意义。因此,您可以评估它是否适合您的用例。