Ищите дизайн шаблона предложения для нескольких условий скакать - PullRequest
0 голосов
/ 15 октября 2018

Мы разрабатываем HR ERP.У нас есть модуль «выхода».

Одной из основных функций является запрос на перерыв или оставление заявки на подачу заявки. У нас есть метод проверки заявки на отпуск для подачи с использованием почти 1000 строк кода.Лоты if, else and dynamic data conditions представлены по этому методу.Следует отметить, что этот метод происходит от устаревшей системы.

Я планирую использовать Strategy pattern для разделения бизнес-условий и проведу рефакторинг этого 1000-строчного метода на несколько небольших частей метода.

Я прошу совета некоторых экспертов относительно того, какой шаблон проектированияболее уместно в этом сценарии.

Мы используем Asp.Net Core 2.0 MVC (.Net Framework-зависимая версия.) с C #.

1 Ответ

0 голосов
/ 17 октября 2018

Исходя из моего ограниченного контекста, сразу приходят в голову некоторые мысли

Пример ниже приведен на языке 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), поэтому я лично предпочел бы шаблон стратегии.Но шаблонные шаблоны имеют больше смысла в некоторых сценариях.Таким образом, вы можете оценить, подходит ли он вашему варианту использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...