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

Знаю что я отвечу в стиле «вам это не нужно»,

но другого ответа у меня нет.
1. Зачем фабрике запрашивать произвольные типы из контейнера?
2. Почему фабрика контролирует время жизни объекта?

13 ответов

6 просмотров

По второму вроде логично: кто объект создаёт, тот его и танцует

https://t.me/pro_net/621992

Ἀρίσταρχ-Zagorodnikov Автор вопроса

Ну по мне это сомнительный дизайн.

Ἀρίσταρχ Zagorodnikov
Ну по мне это сомнительный дизайн.

Ты же хочешь использовать какие то свои сервисы в хендлерах или при конфигурации клиента

Ἀρίσταρχ-Zagorodnikov Автор вопроса
Ἀρίσταρχ Zagorodnikov
Поэтому я их передаю в фабрику.

Для каждого хендлера свой сервис. Что ты передашь в фабрику?

Ἀρίσταρχ-Zagorodnikov Автор вопроса

Эта реализация фабрики нарушает SRP.

Ἀρίσταρχ-Zagorodnikov Автор вопроса
Ilya Chernoudov
Работать то как то надо

Конкретно в том методе, который ты прислал, никакой проблемы нет. Это статический метод, который используется на этапе композиции, и при помощи ленивой инициализации (HttpClientFactoryOptions.HttpMessageHandlerBuilderActions) и функционального интерфейса (Action<HttpMessageHandlerBuilder>) создаёт то что нужно. Другое дело что в HttpMessageHandlerBuilder кто-то добавил IServiceProvider.Services зачем-то, вместо того, чтобы спрятать их за тот же функциональный интерфейс.

Ἀρίσταρχ-Zagorodnikov Автор вопроса
Ἀρίσταρχ Zagorodnikov
А есть разница?

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

Ἀρίσταρχ-Zagorodnikov Автор вопроса
Ilya Chernoudov
Конечно, потому что этот метод вызывается фабрикой...

Мне всё равно когда оно вызывается, честное слово. Судя по тому что я вижу, логика конфигурирования помещается в HttpClientFactoryOptions, который использует билдер.

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

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

Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
56
Вопрос, вот задание https://stepik.org/lesson/7602/step/9?unit=1473 вот код и ошибка, удивляет, что требуется еще и Semigroup так и должно быть, или я опять делаю ошибки ? htt...
Fedor
14
Вообще, меня бы даже такой вариант, наверное устроил бы: try tag.Read(0); finally end; Но этот AV не ловится и программа завершается Exception EAccessViolation in module C...
notme
12
Проблема с Windows scripting control Множество объектов получают iDispatch обертки и отдаются в скрипты. При этом скрипты могут эти обертки держать живыми очень долго, наприм...
Arioch The
16
Скажите, можно ли как-то "переместить" динамический массив из одной переменной в другую? Скажем, переместить из TList<> в TArray<>. Именно переместить, а не скопировать. Если ...
Eugene Krasnikov (ᴊɪɴ x)
37
Да и вообще... как VBS/VBA производит вызов методов тогда? Как мне на Delphi сделать точно также, блин.... VBS/VBA не падают, а возвращают нормальный СОМ-объект, где можно про...
notme
10
Всем доброго времени суток! В BDE в своё время был файл BDEINST.dll который, как я понимаю, содержал всё что нужно для инсталляции BDE. Если посмотреть на дату его создания то...
Mikhail Tchervonenko
2
Я тут пытаюсь переработать архитектуру подсистемы памяти ядра во что-то осмысленное. Есть pmm, который создает набор range’ей(пока что только для ядра, потом для юзерспейса), ...
Evg Resh
9
комрады, че-та лыжы не едут var tmpFont: TFont; begin tmpFont:= TFont.Create; try case rgFontColor.ItemIndex of 0: tmpFont.Color:= clWindowText; 1: tmpFo...
Ed Doc
34
Карта сайта