Как назвать классы, которые репозиторий использует для доступа к данным? - PullRequest
2 голосов
/ 25 августа 2009

Я программировал много лет, в последнее время я пытался применить некоторые идеи из доменного проектирования, но я все еще борюсь с выбором хороших имен для определенных частей системы.

Вот один пример;

У меня есть веб-служба WCF, которая возвращает объекты "Компьютер". Объект является агрегированным корнем, который содержит дочерние объекты.

Дочерние объекты загружаются из двух разных баз данных и из Active Directory.

Сейчас у меня есть отдельные классы репозитория для каждой сущности «ComputerAssetRepository», «DeploymentRepository», «DirectoryRepository» и т. Д., Затем у меня есть «ComputerRepository», который вызывает каждый дочерний репозиторий и возвращает результат в агрегат «Computer» корневая сущность.

Вероятно, у меня должен быть только один "ComputerRepository", а другие классы отвечают только за доступ к данным из различных источников. Поскольку им нужны общие функции хранилища FindById / Add / Remove / Contains и т. Д., Я называю их хранилищами.

Есть ли лучшее название для этих классов?

1 Ответ

1 голос
/ 25 августа 2009

Я думаю, что правильный ответ зависит от того, являются ли ComputerAsset, Deployment, Directory и другие подобные дочерние объекты глобально доступными агрегатами так же, как Computer.

В любом случае, я думаю, что они заслуживают своих собственных репозиториев, и я думаю, что они сейчас названы подходящими. «Репозиторий» в смысле DDD просто относится к механизму обхода, с помощью которого вы работаете с существующими объектами (фабрики обрабатывают создание новых объектов). Но если они не предназначены для глобальной доступности, просто сделайте эти репозитории внутренними в ComputerRepository.

...