170 похожих чатов

Подскажите по вопросу для создания сущностей вместо конструкторов я часто использую

статические методы в классе той же сущности, которые называю
CreateFromJSON,
CreateFromXML
CreateFromAny....

получается так
var doc = Document.CreateFromJSON(jsonDoc);



такой приём относится к какому-то паттерну?

15 ответов

7 просмотров

Фабрика / Фабричный метод

Десериализация

Michael
Почему ето фабрика?

Потому что у всех этих типов может быть общий интерфейс

Maxim Rudnev
там только один тип

Json, xml, ... any разве ничего не объединяет ?

Maxim-Rudnev Автор вопроса
Danil S
Json, xml, ... any разве ничего не объединяет ?

всех их объединяет то, что они возвращают один и тот же тип и находятся в одном и том же классе

Maxim-Rudnev Автор вопроса
Danil S
Я про входные параметры

могут быть какие угодно, в зависимости от необходимости. Все методы статические, поэтому в интерфейсе не определяются

Maxim Rudnev
могут быть какие угодно, в зависимости от необходи...

Идея же не в этом, почитайте - https://refactoring.guru/design-patterns/factory-method, там даже пример есть

Maxim Rudnev
могут быть какие угодно, в зависимости от необходи...

Инстанс создаётся не через конструктор , а через метод = фабричный метод , то что там будет процесс десериализации фиг с ним , сама суть в том , что ты получаешь инстанс через метод

Maxim-Rudnev Автор вопроса
Danil S
Идея же не в этом, почитайте - https://refactoring...

Там ситуация когда есть несколько продуктов с одним интерфейсом и под каждый продукт делается отдельный creator В моей ситуации есть один продукт и несколько фабричных методов, находящихся не в отдельных creator, а в том же классе продукта (так как не имеет смысла их выносить в отдельный класс) получается я объединил класс креатора с классом продукта, отсюда возник вопрос, можно ли это назвать фабричными методами

Maxim Rudnev
Там ситуация когда есть несколько продуктов с одни...

Можно. См. родные в .net классы XmlReader и его методы Create, например

Maxim Rudnev
Там ситуация когда есть несколько продуктов с одни...

Там не самые лучшие примеры для понимания, причем часто в примерах стирают грань между фабричным методом и абстрактной фабрикой , суть фабрик по сути в том , что ты не создаёшь экземпляр просто вызвав конструктор , а получаешь его через специальный метод , поэтому он и называется фабричный метод , метод который как бы выпускает что-то

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта