DDD / Репозиторий - PullRequest
       13

DDD / Репозиторий

3 голосов
/ 25 марта 2009

Я очень плохо знаком с DDD. Моя таблица SQL содержит список стилей, каждый стиль имеет цвета и размеры. Сейчас я работаю над приложением, в котором пользователь увидит три выпадающих списка, один для стиля, один для цвета и один для размера. Теперь изначально эти выпадающие списки загружаются с различными значениями. Затем пользователь может выбрать стиль, и система сможет найти все цвета / размеры для этого выбранного стиля. Пользователь может сделать то же самое с цветом, и он загрузит стили, которые соответствуют выбранному цвету и размерам. Вы поняли идею.

Это мои основные требования. Теперь я думал о создании хранилища для стилей (StyleRepository), чтобы он загружал все стили, а при необходимости загружал дочерние цвета и дочерние размеры.

Однако, как описано в моем приложении, мне также нужно будет загрузить различные цвета или размеры. Теперь рекомендуется создать три репозитория вместо StyleRepository, ColorRepository, SizeRepository или я бы создал совершенно другой репозиторий?

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

Спасибо

Ответы [ 2 ]

3 голосов
/ 25 марта 2009

Стиль является вашим корневым агрегатным объектом. Это то, что вы строите свой репозиторий вокруг.

Поскольку каждый стиль имеет определенное подмножество цветов и размеров, разрешенных для этого стиля, каждый стиль должен содержать список цветов и стилей.

public class Style
{
   public IList<Color> Colors { get; set;}
   public IList<Size> Sizes { get; set;}
}

В вашем репозитории будет метод FindAll () для возврата всех стилей. Каждый стиль имеет свой собственный список цветов и размеров, поэтому нет необходимости снова нажимать на хранилище, чтобы получить их. Когда пользователь выбирает определенный стиль из выпадающего списка (надеюсь, вы связали объект Style), вы можете просто получить список цветов и размеров из выбранного объекта и заполнить другие выпадающие списки.

Когда пользователь выбирает определенный стиль, цвет и размер, я бы предположил, что он сохраняется в отдельном классе, например, в классе SelectedStyle, который содержит только одно свойство цвета и размера.

public class SelectedStyle
{
   public Color Color { get; set;}
   public Size Size { get; set;}
}
0 голосов
/ 25 марта 2009

Поскольку в вашем случае цвета являются фактическими цветами, используемыми стилями, а не просто абстрактным списком цветов (как в приложении рисования), я бы выбрал StyleRepository и метод addeed, например GetAllUsedColors ().

...