Установить свойства агрегата root дочерний - PullRequest
0 голосов
/ 24 февраля 2020

Я прочитал статью о DDD о том, что Aggregate должен отвечать за создание или обновление Aggregate Root Child. Моя единственная проблема в том, что если дочерний агрегат имеет много свойств.

Что я обычно делаю, так это:

public class Parent
{

    public Child Child1{ get; protected set; }
    public void SetOrUpdateChild(string prop1, string prop2, string prop3, string prop4, string prop5, string prop6, string prop7, string prop8, string prop9, string prop10)
    {
        Child1 = Child.Create(prop1, prop2, prop3, prop4, prop5, prop6, prop7, prop8, prop9, prop10);
    }
}
public class Child
{
    public Child(string prop1, string prop2, string prop3, string prop4, string prop5, string prop6, string prop7, string prop8, string prop9, string prop10)
    {
        Prop1 = prop1;
        Prop2 = prop2;
        Prop3 = prop3;
        Prop4 = prop4;
        Prop5 = prop5;
        Prop6 = prop6;
        Prop7 = prop7;
        Prop8 = prop8;
        Prop9 = prop9;
        Prop10 = prop10;
    }

    public string Prop1 { get; protected set; }
    public string Prop2 { get; protected set; }
    public string Prop3 { get; protected set; }
    public string Prop4 { get; protected set; }
    public string Prop5 { get; protected set; }
    public string Prop6 { get; protected set; }
    public string Prop7 { get; protected set; }
    public string Prop8 { get; protected set; }
    public string Prop9 { get; protected set; }
    public string Prop10 { get; protected set; }

    public static Child Create(string prop1, string prop2, string prop3, string prop4, string prop5, string prop6, string prop7, string prop8, string prop9, string prop10)
    {
        return new Child(prop1, prop2, prop3, prop4, prop5, prop6, prop7, prop8, prop9, prop10);
    }
}

Есть ли лучший способ сделать это? Я знаю, что могу просто передать объект Child методу AddChild, но я думаю, что это не идеальный способ. Меня беспокоит то, что будет трудно управлять, если объект Child растет.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Что-то не так с абстракциями, вы их не нашли. Сплоченность, вероятно, нарушена. Инвестируйте, как prop1 связан с prop2, и если это отношение одинаково для реквизитов. Если нет, их следует сгруппировать для формирования нового ValueObject (Street, City, Apt -> Address)

0 голосов
/ 24 февраля 2020

Попробуйте использовать шаблон Builder для построения.

Кроме того, вы можете оценить возможность группировки параметров в значимые объекты-значения.

...