Реализация доменного управляемого дизайна

Кто-либо использует методы от Доменного Управляемого Дизайна? Я недавно прочитал книгу Eric Evans того же имени (хорошо, большая часть из него!) и был бы интересно получать известие от любого, кто реализовал весь/некоторый его в проекте (особенно в C#/C ++)

Я сохранил этот вопрос открытым законченный, поскольку я хотел бы видеть как можно больше комментариев, но у меня есть несколько вопросов в особенности:

1 - Типы значения должны быть реальными 'типами значения', если язык поддерживает его? например, структура в C#

2-там любая функция в C#, который делает более ясным ассоциация между языком и моделью (например, это - объект, это - агрегат и т.д.),

10
задан Steve Dunn 22 March 2010 в 11:23
поделиться

3 ответа

Да! Я использую DDD в своих проектах (но я предвзято !)

Помните, что Domain Driven Design предоставляет руководящие принципы , а не строгие ответы. Только после экспериментов вы поймете, какие аспекты работают для вашего конкретного проекта.

К вашим вопросам:

1 - Вы можете использовать структуры, но могут быть технические ограничения , которые не позволяют вам их использовать. Например, у вас могут быть сущности, которые ссылаются на тысячи объектов значений, которые имеют одинаковые значения. В этом случае было бы лучше использовать объект flyweight , чтобы уменьшить использование памяти .

2 - Я бы предложил использовать интерфейсы (например, IEntity , IValueObject , IAggregateRoot , ISpecification ). . Generics и LINQ могут помочь в решении технических проблем, но они менее полезны с точки зрения дизайна .

Я создал [бесплатную библиотеку .NET] [2], специально ориентированную на DDD, в которой можно найти идеи / вдохновение. [Подробнее об этом здесь.] [3] (проект мертв)

Мне искренне интересно: Какие аспекты DDD, по вашему мнению, принесут вам пользу? Аспекты «управляемости доменом» или аспекты реализации?

6
ответ дан 4 December 2019 в 00:23
поделиться

1: зависит. Типы значений в C# предназначены для атомарных пимитивов (int, byte и т.д.). Если у вас есть что-то подобное - это имеет смысл. Если ваш тип значения больше, то нет.

2: Нет. В общем, это не особенность языка.

В качестве следующего чтения я предлагаю: Scott Ambler's "Building Object Applications That Work".

3
ответ дан 4 December 2019 в 00:23
поделиться

1 - Должны ли типы значений быть реальными «типами значений», если язык поддерживает это?

Я думаю, что ответ на этот вопрос будет зависеть от использования и других факторов в вашем приложении, но шаблон, который вы, вероятно, ищете, таков: «Объект передачи данных», у которого есть свойства, геттеры и сеттеры, но ничего больше. Это может быть структура или объект, и объекты, вероятно, упростят управление памятью, особенно в отношении упаковки.

2- Есть ли в C # какая-либо функция, которая делает более ясной связь между языком и моделью (например, это сущность, это агрегат и т. Д.)

Я бы пошел с соглашениями об именах, например, «CustomerEntity», «OrderAggregate» и т. Д.

Хороший вопрос; Я с нетерпением жду ответов.

2
ответ дан 4 December 2019 в 00:23
поделиться
Другие вопросы по тегам:

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