Предположим, у меня есть 2 класса: ValidatorA
, ValidatorB
, и оба имеют одно и то же объявление функции Validate
: public void Validate(string input)
(таким образом реализуя тот же интерфейс).Шаблон проектирования для создания определенного типа объекта
Как создать единую точку, которая получит имя , и отправить его соответствующему методу Validate
, который он должен использовать? (В случае, если я не хочу использовать "переключатель-дело" ...)
Например:
Тип "Bla" следует активировать метод ValidatorA
Тип "Bla2" следует активировать метод ValidatorB
Тип "blÀ3" следует активировать метод ValidatorA
PS
Я думал об использовании словаря в классе, и инициализировать его в конструкторе, как:
Dictionary<string,IValidator> dic = new Dictionary<string,IValidator>();
dic["Bla"] = new ValidatorA();
dic["Bla2"] = new ValidatorB();
dic["Bla3"] = new ValidatorA();
Затем использовать:
общественности недействительным OnePoint (тип строки, строка ввода) { DIC [ тип] .validate (вход); }
Но этот способ позволяет мне только SINGLE экземпляр для типа.
На каком языке вы хотите получить ответ? И, по крайней мере, для java, имена методов должны также использовать camlCase(). – GhostCat
Почему вы думаете, что это позволяет вам только один экземпляр? –
Что случилось с тем, что вы написали? В зависимости от типа будет инициирован правильный метод проверки (полиморфизм) – ehh