Как написать функциональность с помощью DDD / CQRS

У меня есть домен банковского счета, как указано ниже. Могут быть SavingsAccount, LoanAccount, FixedAccount и так далее. Один пользователь может иметь несколько учетных записей. Мне нужно добавить новый функционал — получить все аккаунты для пользователя. Где должна быть написана функция и как?

Было бы здорово, если бы решение соответствовало принципам SOLID (принцип Open-Closed,…) и DDD.

Приветствуется любой рефакторинг, улучшающий код.

Примечание. AccountManipulator будет использоваться клиентом веб-сайта через веб-службу.

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()
    {

    }
}
}

ЧТЕНИЕ:

  1. Когда использовать шаблон проектирования CQRS?

  2. Будет ли нарушением DDD размещение обращений к репозиториям других объектов в объекте домена при проектировании, управляемом доменом?

  3. Рефакторинг доменной логики, которая обращается к репозиториям в устаревшей системе.

  4. Какие из этих примеров представляют правильное использование DDD?

  5. Примеры Good Domain Driven Design

  6. Преимущество создания общего репозитория по сравнению с конкретным репозиторием для каждого объекта?

6
задан Community 23 May 2017 в 11:43
поделиться