我是春天新手,我试图重构一些代码,我有以下内容" Session.class":
public class Session {
...
private Wallet currenetWallet;
...
public Session(..., int sessionId, ...) {
...
ThirdPartyToken token = context.getBean(ThirdPartyTokenDAO.class).getThirdPartyToken(sessionId);
if (token.getExternalUser().getMerchant().getType().equals("SOAPMerchant")) {
currenetWallet = (Wallet) context.getBean("SOAPExternalWallet", token);
}
else if (token.getExternalUser().getMerchant().getType().equals("JSONMerchant")) {
currenetWallet = (Wallet) context.getBean("JSONExternalWallet", token);
}
else {
currenetWallet = (Wallet) context.getBean("GuestWallet", 1000.0);
}
...
}
}
我读到使用context.getBean()是一种不好的做法,并使该类不可测试。 根据以上内容连接currentWallet的正确方法是什么?
答案 0 :(得分:0)
创建一个界面Wallet
并创建实施类,如SOAPExternalWallet
,JSONExternalWallet
,GuestWallet
。
创建一个工厂类,然后根据类型从工厂类返回正确的实现。