Я уверен, что я не единственный, кто сталкивается с этой проблемой, но до сих пор я не могу найти решение. Проблема заключается в следующем.Какой шаблон дизайна использовать для проверки
Я опубликовал веб-сервис (на котором у меня нет никакого контроля, и я не могу его изменить) из старой системы, и все клиенты используют его. Я получаю запросы от веб-службы, и объект, который я получаю, является очень сложным, но для примера можно сказать, что я получаю объект A от вызова веб-службы, который содержит несколько других объектов, таких как Object B, Object C и т. Д. И т. Д. кроме того, объекты B & C также имеют некоторые примитивные типы данных, а также некоторые другие объекты в них. Моя проблема в том, что я хочу проверить весь объект A (все объекты и суб объекты), какой шаблон дизайна рекомендуется здесь? Во-вторых, основной момент здесь заключается в том, что я могу получить различные типы объектов A из веб-службы. То, что я действительно подразумеваю под разными типами объектов A, заключается в том, что объект A зависит от клиента, то есть некоторые клиенты будут отправлять объект A без заполнения данных в содержащем объекте B или даже частично заполнить объект B, а затем отправить его в Object A . Поэтому я должен проверить объект A на основе клиента (поскольку некоторым клиентам потребуется содержать объект B, некоторые не будут, некоторые потребуют нескольких элементов в объекте B и т. Д.). Таким образом, другими словами, у меня будет место, где я также буду хранить правила проверки для каждого клиента, который скажет мне что-то вроде этого, что клиент ABC хочет, чтобы поле abc в объекте B имело строку типа, а максимальная длина - 25 символов, и это является обязательным для получения данных в этой области.
Некоторые валидаций, которые я хотел бы выполнить это
Проверка полей какого-либо объекта (скажем, объект В) для типов данных, длина конкретной области, это поле, необходимое для этого клиента, или это необязательно и т.д. и т.п. ...
Любой конкретный рабочий пример будет чрезвычайно полезен.
Структура объекта А для данного конкретного примера выглядит следующим образом.
public class A
{
private B objectB;
private C objectC;
// and so on
}
public class B{
private E objectE;
private String name;
private int age;
// and so on
}
public class C
{
private F objectF;
private String address;
private String country;
}
public class E
{
// Members here
}
public class F
{
// Members here
}
P.S: Я дал произвольные имена классам и членам только для общего понимания. O да, я забыл упомянуть, что я использую java здесь, но это не имеет особого значения, поскольку принципы дизайна или шаблоны могут применяться к любому языку. Надеюсь услышать от вас, ребята, скоро. :)
Валидация может быть проведена различными способами и основана на мнениях. Посмотрите на [Стратегический шаблон] (http://en.wikipedia.org/wiki/Strategy_pattern). – Bart
Можете ли вы порекомендовать любую альтернативу, кроме шаблона стратегии? –
Предлагаю вам использовать комбинацию Visitor и Factory/AbstractFactory. Фабрика может создавать любые классы валидатора по типу клиента со специальными правилами. Посетительский автомобиль проверяет всю структуру с использованием класса валидатора –