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?
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?
Zaleta tworzenia ogólnego repozytorium w porównaniu z konkretnym repozytorium dla każdego obiektu?