Чистая архитектура/DDD: лучшие практики для сложных объектов-ценностейPhp

Кемеровские программисты php общаются здесь
Anonymous
Чистая архитектура/DDD: лучшие практики для сложных объектов-ценностей

Сообщение Anonymous »

Я создаю PHP-приложение, используя принципы чистой архитектуры.
Мне нужен объект денежного значения на уровне домена, и я пытаюсь понять, что сегодня считается лучшей практикой.
Похоже, существует несколько возможных подходов, каждый из которых имеет существенные недостатки:
  • Реализовать свой собственный неизменяемый объект денежного значения с помощью таких операций, как сложение, вычитание, умножение и т. д.
    • Это дает полный контроль, но создается ощущение, будто заново изобретаешь что-то, что уже является решенной проблемой.
  • Использовать существующую библиотеку (например, кирпич/деньги) непосредственно внутри уровня домена.
    • Это вводит прямую зависимость от сторонней реализации внутри основного домена.
  • Скройте стороннюю библиотеку за интерфейсами/адаптерами.
    • Это позволяет избежать прямого связывания, но может привести к появлению ненужной абстракции и шаблона для объекта значения.
  • Сохраните Money как простой держатель данных и переместите арифметические операции в отдельные сервисы.
    • Это может привести к анемическому домену модель и разбросанные бизнес-правила.
Я пытаюсь избежать ненужного чрезмерного проектирования, но также не хочу изобретать велосипед, если уже существует широко распространенный подход.
P.S. Речь идет не только о деньгах, но и о других сложных объектах-значениях с нетривиальным поведением.

Вернуться в «Php»