请教一个问题

10-05-21 klcwt
背景:银行提供转账服务,采用DDD设计思想。
写了一个Account实体对象
public class Account {
//主键id
private long id;
//账号唯一编号
private String number;
//是否激活
private boolean isActive;
//账号余额
private BigDecimal balance;
//冻结余额
private BigDecimal frozenAmount;

//交易历史记录
private Set<AccountTransactionDetails> transactionDetailses;

/**
* 向银行账户存入金额,贷记
*/
public void credit(BigDecimal depositMoney) {
//Validate.isTrue(depositMoney.compareTo(BigDecimal.ZERO) > 0);
//验证
validate();
//增加存款
balance.add(depositMoney);
//创建明细
createTransactionDetails();
}

/**
* 从银行账户划出金额,借记
*/
public void debit(BigDecimal amount) {
//Validate.isTrue(depositMoney.compareTo(BigDecimal.ZERO) > 0);
//验证
validate();
if (balance.compareTo(amount) < 0) {
throw new InsufficientBalanceException("余额不足");
}
//减少存款
balance = balance.subtract(amount);
//创建明细
createTransactionDetails();
}

/**
* 转账
*/
public void transferTo(Account destAccount,BigDecimal amount){
//从银行账户划出金额,借记
debit(amount);
//向银行账户存入金额,贷记
destAccount.credit(amount);
//创建明细
createTransactionDetails();

}

/**
* 创建交易明细
*/
protected void createTransactionDetails() {

}

/**
* 更新信用等级
*/
protected void updateCreditIndex(BigDecimal newMney) {

}

/**
* 判断是否可用
*/
private void validate() {
if (!isActive) {
throw new AccountNotActiveException("账号未生效");
}
}

}
问题这个方法,
/**
* 转账
*/
public void transferTo(Account destAccount,BigDecimal amount){
//从银行账户划出金额,借记
debit(amount);
//向银行账户存入金额,贷记
destAccount.credit(amount);
}
请问,这个transferTo()方法是应该放在Account类中,还是应该把他放入到service中了?

banq
2010-05-22 08:29
2010年05月21日 17:37 "klcwt"的内容
个transferTo()方法是应该放在Account类中,还是应该把他放入到service中了 ...

都不应该放,而是放在DCI架构的Context中。

猜你喜欢