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

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

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

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



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

15 ответов

3 просмотра

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

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

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
Там ситуация когда есть несколько продуктов с одни...

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

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

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

А чем вам питонисты не угодили?😂
.
79
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Привет, имею проблему с better-sqlite3 модулем. После npm install я делаю ребилд модуля под свою текущую версию ноды с помощью npx electron-rebuild -f -m node_modules/better-s...
Anton Samofal
1
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
15
Я вот так сделал, без base. Шаблон text называется, его контроллер: <?php namespace EvolutionCMS\Main\Controllers; use EvolutionCMS\TemplateController; class TextTemplateCo...
Oleg Nosov
1
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
Карта сайта