статические методы в классе той же сущности, которые называю
CreateFromJSON,
CreateFromXML
CreateFromAny....
получается так
var doc = Document.CreateFromJSON(jsonDoc);
такой приём относится к какому-то паттерну?
Фабрика / Фабричный метод
Десериализация
Почему ето фабрика?
А почему нет?
Потому что у всех этих типов может быть общий интерфейс
там только один тип
Json, xml, ... any разве ничего не объединяет ?
всех их объединяет то, что они возвращают один и тот же тип и находятся в одном и том же классе
Я про входные параметры
могут быть какие угодно, в зависимости от необходимости. Все методы статические, поэтому в интерфейсе не определяются
Идея же не в этом, почитайте - https://refactoring.guru/design-patterns/factory-method, там даже пример есть
Инстанс создаётся не через конструктор , а через метод = фабричный метод , то что там будет процесс десериализации фиг с ним , сама суть в том , что ты получаешь инстанс через метод
Там ситуация когда есть несколько продуктов с одним интерфейсом и под каждый продукт делается отдельный creator В моей ситуации есть один продукт и несколько фабричных методов, находящихся не в отдельных creator, а в том же классе продукта (так как не имеет смысла их выносить в отдельный класс) получается я объединил класс креатора с классом продукта, отсюда возник вопрос, можно ли это назвать фабричными методами
Можно. См. родные в .net классы XmlReader и его методы Create, например
Там не самые лучшие примеры для понимания, причем часто в примерах стирают грань между фабричным методом и абстрактной фабрикой , суть фабрик по сути в том , что ты не создаёшь экземпляр просто вызвав конструктор , а получаешь его через специальный метод , поэтому он и называется фабричный метод , метод который как бы выпускает что-то
Обсуждают сегодня