请教一个问题

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中。

猜你喜欢