Network
состоит из Node
, связанных с Fiber
. Network
отвечает за то, чтобы:
- оба конца любого волокна подключены к
Node
; - что никакие два конца не соединены с одним и тем же
Node
; - что никакие два узла не могут находиться в одном и том же месте (x, y);
- сеть имеет ограничение в 10 узлов и 10 волокон.
И Network
, и Node
, и Fiber
богаты информацией (у них есть имя, дата развертывания и т. д.), и мне кажется, что Network
является сводным корнем (поскольку он содержит как Node
, так и Fibers
и принудительные инварианты между ними).
На данный момент я также уверен, что Node
и Fiber
являются сущностями и что они, вероятно, также являются совокупными корнями.
Одна из возможных реализаций класса Network
может быть следующей:
class Network {
private final NetworkId id;
private String name;
private Location location;
...
private final Map<FiberId, Fiber> fibers = new HashMap<FiberId, Fiber>();
private final Map<NodeId, Fiber> nodes = new HashMap<NodeId, Node>();
}
что создает большую проблему, если мой вариант использования — просто отредактировать местоположение или имя файла Network
. В этом случае я просто не забочусь о волокнах и узлах, и на самом деле ожидается, что их число вполне возможно, чтобы их количество было порядка 10-100 тысяч узлов/волокон! Как мне подойти к этому вопросу? Должен ли я отделить определение Network
(содержащее fibers
и nodes
и их инварианты) от остальных полей?
Я всегда думал о совокупных корнях как о сущностях, которые имеют набор инвариантов для своих атрибутов, в отличие от сущностей, которые просто не заботятся о состоянии своих атрибутов (например, человек, определенный именем и возрастом). вероятно, не потребуется какая-либо проверка на недопустимые комбинации имени и возраста).
Следуя этой философии, я обычно склонен решать, является ли некоторая концепция предметной области значением, сущностью, значением или событием, а затем является ли она сущностью или совокупным корнем. Мое предположение ошибочно?
Спасибо