1.源代码
AccountService.java
package com.account;
import com.account.Account;
import com.account.AccountManager;
public class AccountService
{
//使用的账户管理器实现
private AccountManager accountManager;
//设置账户管理器实现的设置方法
public void setAccountManager( AccountManager manager )
{
this.accountManager = manager;
}
//一个设置客户经理实现从账户到账户的senderId beneficiaryId setter方法。
//senderId:转出方Id
//beneficiaryId:收益方Id
//amount:金额
public void transfer( String senderId, String beneficiaryId, long amount )
{
//初始化转出方与收益方,findAccountForUser为接口类方法
Account sender = this.accountManager.findAccountForUser( senderId );
Account beneficiary = this.accountManager.findAccountForUser( beneficiaryId );
//转入和收益
sender.debit( amount );
beneficiary.credit( amount );
//更新,updateAccount为接口类方法
this.accountManager.updateAccount( sender );
this.accountManager.updateAccount( beneficiary );
}
}
Account.java
package com.account;
public class Account
{
private String accountId;
private long balance;
public Account(String accountId, long initialBalance)
{
this.accountId = accountId;
this.balance = initialBalance;
}
//借记
public void debit( long amount )
{
this.balance -= amount;
}
//信用
public void credit( long amount )
{
this.balance += amount;
}
public long getBalance()
{
return this.balance;
}
}
AccountManager.java
package com.account;
import com.account.Account;
public interface AccountManager
{
Account findAccountForUser(String userId );
void updateAccount(Account account );
}
由于在这里AccountManager.java仅仅做了一个interface,我们主要Mock的是这个类。这几个类的类关系图如下:
通常的调用方法如下:
@Test
public void