Jak pisać funkcje za pomocą DDD / CQRS

Mam domenę konta bankowego wymienioną poniżej. Mogą to być konta oszczędnościowe, konto kredytowe, konto stałe i tak dalej. Jeden użytkownik może mieć wiele kont. Muszę dodać nową funkcjonalność - uzyskać wszystkie konta dla użytkownika. Gdzie powinna być napisana funkcja i jak?

Byłoby świetnie, gdyby rozwiązanie opierało się na zasadach SOLID (zasada Open-Closed,…) i DDD.

Wszelkie refaktoryzacje, które poprawiłyby kod, są mile widziane.

Uwaga: AccountManipulator będzie używany przez klienta strony internetowej za pośrednictwem usługi internetowej.

namespace BankAccountBL
{
public class AccountManipulator
{
    //Whether it should beprivate or public?
    private IAccount acc;

    public AccountManipulator(int accountNumber)
    {
        acc = AccountFactory.GetAccount(accountNumber);
    }

    public void FreezeAccount()
    {
        acc.Freeze();
    }

}

public interface IAccount
{
    void Freeze();
}

public class AccountFactory
{
    public static IAccount GetAccount(int accountNumber)
    {
        return new SavingsAccount(accountNumber);
    }
}

public class SavingsAccount : IAccount
{
    public SavingsAccount(int accountNumber)
    {

    }

    public void Freeze()
    {

    }
}
}

CZYTANIE:

Kiedy stosować wzór projektowy CQRS?

Czy w projektowaniu opartym na domenach łamanie wywołań repozytoriów innych obiektów w obiekcie domeny byłoby naruszeniem DDD?

Refaktoryzacja logiki domeny, która uzyskuje dostęp do repozytoriów w dotychczasowym systemie

Który z tych przykładów reprezentuje prawidłowe użycie DDD?

Dobre wzorce napędzane domeną

Zaleta tworzenia ogólnego repozytorium w porównaniu z konkretnym repozytorium dla każdego obiektu?

questionAnswers(4)

yourAnswerToTheQuestion