Как написать функциональность с использованием DDD / CQRS
У меня есть домен банковского счета, как указано ниже. Может быть SavingsAccount, LoanAccount, FixedAccount и так далее. Один пользователь может иметь несколько учетных записей. Мне нужно добавить новый функционал & # x2013; получить все учетные записи для пользователя. Где должна быть написана функция и как?
Было бы здорово, если бы решение следовало принципам SOLID (принцип Open-Closed, & # x2026;) и 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()
{
}
}
}
ЧТЕНИЕ:
When to use the CQRS design pattern?
Refactoring domain logic that accesses repositories in a legacy system
Which of these examples represent correct use of DDD?
Good Domain Driven Design samples
Advantage of creating a generic repository vs. specific repository for each object?