写的第一个ddd的demo,大家看看我理解的对不对

11-02-11 xiaolongnvo
account 是一个实体。有存款,取款俩个行为。

accountRepository 仓储类。有三个方法,新建账号,得到账号,更新账号。

有一个转账的业务。A到B。假设条件成立,A有足够的钱。

领域服务 是不是应该这么写?

public interface DomainService {

// 调用accountRepository的得到账号方法得到account 分别执行account的

存款,取款方法。然后调用accountRepository的更新账号方法

boolena transfer(String fromAccountId, String toAccountId,

BigDecimal amount)

}

应用层服务在调用领域层服务?要是转账成功就打印凭据。要是新建账号成功就打印凭据,

public interface ApplicationService {

// 这里调用领域层服务

boolean transfer(String fromAccountId, String toAccountId,

BigDecimal amount)

// 这里调用accountRepository的新建账号方法

Account createAccount(String accountId, BigDecimal balance);

// 这里调用accountRepository的得到账号方法

BigDecimal getBalance(String accountId);

}

我这样写对不?

那事务应该在那一层上? 领域层服务那层还是应用层服务那层?

         

2
oojdon
2011-02-11 16:13
2011年02月11日 15:27 "xiaolongnvo"的内容
那事务应该在那一层上? 领域层服务那层还是应用层服务那层 ...

应用层

banq
2011-02-11 16:56
关于转账这个案例,使用DDD不是非常合适,因为Transfer只能作为服务,实际上它和Account关系比较密切,只是在不同Accout实例之间发生行为,通过DCI以及Scala等面向函数语言最合适。具体可看本站这方面案例(也是使用转账这个功能)

[该贴被banq于2011-02-11 17:02修改过]

xiaolongnvo
2011-02-11 17:02
2011年02月11日 16:56 "banq"的内容
具体可看本站这方面案例(也是使用转账这个功能) ...

能不能给个明确点的例子?谢谢

xiaolongnvo
2011-02-11 17:03
具体可看本站这方面案例(也是使用转账这个功能) ...

能不能给个明确点的例子?谢谢

猜你喜欢
2Go 1 2 下一页