Size: a a a

Software Design/Architecture/Zen

2021 April 28

IS

I Scarab in Software Design/Architecture/Zen
Оно и должно приниматься вне объекта.
Условно говоря, прилетел кусок данных.
Фабрика посмотрела и породила соответствующий обработчик - для файла, для БД и так далее.
А обработчик должен реализовывать интерфейс выходящей информации, чтобы гарантированно отдавать корректный набор данных.
источник

IB

Igor Burobin in Software Design/Architecture/Zen
то есть у меня какой то порождающий паттерн получается - абстрактная фабрика, строитель или фабричный метод. так?
источник

IS

I Scarab in Software Design/Architecture/Zen
да.
Фабричный метод, по идее, должен подойти.
источник

IS

I Scarab in Software Design/Architecture/Zen
Здесь важно отделить именно логику принятия решения от обработки собственно данных. Остальное нюансы реализации.
источник

IB

Igor Burobin in Software Design/Architecture/Zen
ок, спасибо! Пошел читать банду четырех и реализовывать)
источник
2021 April 29

M

Maxim Kainov in Software Design/Architecture/Zen
Контроллер принимает запрос, в сервисах логика, в репозиториях запросы к бд.
источник

AV

Alexey Vetrov in Software Design/Architecture/Zen
Добрый вечер. Может кто-нибудь подсказать по вопросу одному.
Есть заказ, минимальное количество позиций в заказе - 5, оно фиксированно и задаётся в коде. Минимальная сумма заказа хранится где-то в настройках, т.е. нет фиксированной цены, которую так же можно константой записать.
Вопросы:
1) пока мы формируем корзину, то правильно ли я понимаю, что это не инвариант, что товаров меньше пяти и то, что минимальная сумма не достингута.
2) как назвать объект настроек минимальной суммы?
3) Кто должен производить создание заказа из корзины? Заказ должен иметь метод createFromBasket(Basket basket, OrderSettings settings) или это лучше сделать в каком-нибудь сервисе?

Спасибо
источник

T🐜

The Ant 🐜 in Software Design/Architecture/Zen
из серии "как из обычной валидации нагородить невесть что".
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Накину вариант
order = basket.order(orderSettings);
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Потому что информацией о количестве товаров владеет корзина
источник

М

Махмуд in Software Design/Architecture/Zen
Изучаю гексогональную архитектуру, пытаюсь разобраться в частности с persistenсe layer и его использование с CQRS и DDD

При изучении нескольких демо примеров увидел несколько подходов в реализации persistenсe слоя

1. В домене хранить интерфейс репозитория, в инфраструктурном слое хранить реализацию репозитория(адаптер над хранилищем по Гекc. Архитектуре).

2. Интерфейс и реализацию репозитория хранить в домене, а репозиторий использует адаптер для query builder.
https://github.com/hgraca/explicit-architecture-php/tree/master/src/Infrastructure/Persistence/Doctrine

3. Подход Domain model -> Repository -> Persistence model
https://github.com/Sairyss/domain-driven-hexagon#persistence-models

В подходах с query builder-ом и persistence model слои слишком толстые получатся.
Например во 2 подходе при смене с доктрины на active record, когда адаптер изначально просто дублировал апи доктрины, и под active record надо будет написать много кода.

Хотелось бы разобраться со всеми плюсами и минусами подходов реализации persistence layer и нюансы при использовании разных хранилищ в проекте SQL, NOSQL и т.п.
Есть ли еще какие-то варианты реализации persistenсe слоя?

Гуглил на эту тему, ничего годного пока не нашел.

Потом меня интересует в каких случаях реализовывать Query запросы в CQRS с использованием PDO, или с методом find/findAll с criteria-ми/filter-ами для фильтрации в репозитории или использовать адаптер query builder-а или как лучше их создавать?

В дополнение ) интересует можно ли в приложении использовать интерфейсы PSR, вместо создания адаптеров под PSR пакеты?
источник

AV

Alexey Vetrov in Software Design/Architecture/Zen
Как В таком случае будет выглядеть агрегат?
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Ну эта штука тебя не ограничивает
источник

M

Mars in Software Design/Architecture/Zen
Друзья, всем привет, проводим исследование, помогите пожалуйста. Поделимся потом статой. Очень нужно ваше мнение. Если есть какие-то комментарии сверху или можете помочь с распространением опроса - только приветствуется. Опрос будет передаваться компаниям и публиковаться, так что импакт, наверняка, будет.

Согласовано с @f3ath, поэтому это не спам.

https://forms.gle/ZDzYtpG8AGocLegF6
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Эм 😅
источник

ЕР

Евгений Ромашкан... in Software Design/Architecture/Zen
Странно вышло, что верхняя граница предыдущего ренжа не дотягивает до нижней следующего, но возможно я придираюсь
2.5 года получается попадает в пункт "до 2 лет"
источник

M

Mars in Software Design/Architecture/Zen
спасибо за замечание
источник

M

Mars in Software Design/Architecture/Zen
можете проставить в интервал от 3
источник

SM

Sergey Milimko in Software Design/Architecture/Zen
Прямо как PR на старой работе
источник

M

Mars in Software Design/Architecture/Zen
если дальше продолжаете этим заниматься
источник