Я пытаюсь определить лучший шаблон проектирования, который будет использоваться для веб-службы проверки бизнес-ключей. Основная логическая схема написана ниже. Программа примет параметр и будет использовать поле, помогающее определить путь для поиска в нескольких системах, где можно найти этот бизнес-ключ. Сначала выполняется поиск System1, если не найден, выполняется поиск System2 и System3. Логика поиска System1 зависит от поля в параметре, переданного в исходный метод проверки.
Я не совсем уверен, какой шаблон дизайна использовать. Похоже, что здесь можно использовать команду, цепочку ответственности, шаблонный метод.
С моими реализациями ниже я вижу следующие проблемы:
Каждый метод SearchSystemX должен знать , чтобы вернуть ноль, если бизнес-ключ не найден, так что метод "control" продолжит поиск в других системах.
Каждый SearchSystemX должен знать , как заполнять бизнес-объект, в настоящее время просто реализованный простой примитивной строкой, но это только для примера.
Пожалуйста, дайте мне знать ваши мысли.
public string Validate (string parms) {
string returnValue = null;
returnValue = SearchSystem1(parms);
if (returnValue == null) {
returnValue = SearchSystem2(parms);
if (returnValue != null) {
returnValue = SearchSystem3(parms);
}
else if (returnValue == null) {
if (parms == "Criteria1") {
returnValue = SearchSystem4(parms);
if (returnValue == null) {
throw new ApplicationException("ID Invalid");
}
}
else if (parms == "Criteria2") {
throw new ApplicationException("ID Invalid");
}
}
}
return returnValue;
private string SearchSystem1 (string parms) {
string returnValue = null;
if (parms == "Criteria1") {
returnValue = SearchSystem1UsingColumn1(parms);
}
else if (parms == "Criteria2") {
returnValue = SearchSystem1UsingColumn2(parms);
if (returnValue == null) {
returnValue = SearchSystem1UsingColumn4(parms);
}
}
if (returnValue != null) {
returnValue = FetchXYCoordinate(parms);
}
return returnValue;
}
Спасибо!