У меня есть следующая ситуация:Как определить хороший интерфейс репозитория
Я собираю данные на хостах. Каждый хост имеет коллекции свойств и статусов. и хосты собраны группами.
Каждая группа имеет уникальный идентификатор, и каждый узел имеет уникальный идентификатор
и все группы собраны в одном «хранилище».
настоящее время я использую следующую структуру данных:
public class Host {
private final Map<PropertyId, Property> properties;
private final Map<StatusId, Status> statuses;
}
public class Group {
private final Map<HostId, Host> hosts;
}
public class AllGroups {
private final Map<GroupId, Group> groups;
}
Это в настоящее время реализуется как регулярная в структуре данных на карте памяти, но мне нужно, чтобы сохранить все это в базе данных. Я хочу, чтобы определить хорошую абстракцию, которая позволила бы мне:
- Чтобы прочитать каждый пункт
- для создания обновления и удаления свойств и статусы
- добавлять и удалять узлы
- для удаления групп
Я прочитал несколько сообщений о шаблоне хранилища и, похоже, подходит, но я не могу понять, как правильно определить интерфейсы.
Должен ли я иметь 1 интерфейс репозитория? Или мне нужно иметь отдельные интерфейсы для HostRepository, PropertyRepository StatusReporitory ...
Поскольку «у каждой группы есть уникальный идентификатор, и каждый хост имеет уникальный идентификатор», я бы ожидал увидеть поле «id» в классах Host и Group. –
Что-то вроде этого (https://lostechies.com/jimmybogard/2009/09/03/ddd-repository-implementation-patterns/) стоит прочитать. Имейте в виду, что DDD использует шаблон Фаулера и добавляет к нему дополнительные нюансы. Например. только общие корни доступны через репозиторий. –