【发布时间】:2012-06-19 06:13:35
【问题描述】:
我有一个如下所列的银行账户域。可以有 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()
{
}
}
}
阅读:
【问题讨论】:
-
聚合边界在哪里?
-
扫描提议的代码,它看起来非常名词-沉重,就像大多数传统的OO代码一样。在他的 DDDD 草稿中,Greg Young 清楚地解释了为什么刻板的 OO 方法不适用于 DDD:abdullin.com/storage/uploads/2010/04/…
-
一旦你开始从 CQRS 的角度考虑 DDD,你会经常发现域对象并不是真正的“系统的名词”,而是系统中发生的命令和事件.
标签: c# .net design-patterns domain-driven-design cqrs