📄 accountmanagerimpl.java
字号:
// 账户管理员对象的具体实现
import java.util.*;
import org.omg.PortableServer.*;
public class AccountManagerImpl extends Bank.AccountManagerPOA {
// 属性定义
protected Map accountList; // 该账户管理员所负责的账户清单
// 构造方法,管理员开始时管理的账户清单为空
public AccountManagerImpl() {
accountList = new HashMap();
}
// 查找指定名字的账户,找不到则以该名字新开一个账户
public synchronized Bank.Account open(String name) {
// 在账户清单中查找指定名字的账户
Bank.Account account = (Bank.Account) accountList.get(name);
// 如果不存在则新创建一个
if (account == null) {
// 随机虚构账户的初始余额,金额在0至1000之间
Random random = new Random();
float balance = Math.abs(random.nextInt()) % 100000 / 100f;
// 按指定余额创建账户的伺服对象
AccountImpl accountServant = new AccountImpl(balance);
try {
// 用默认的POA激活伺服对象,这里默认的POA就是根POA
org.omg.CORBA.Object obj = _default_POA().servant_to_reference(accountServant);
// 将对象引用收窄为账户类型
account = Bank.AccountHelper.narrow(obj);
} catch(Exception exc) {
exc.printStackTrace();
}
// 将账户保存到账户清单中
accountList.put(name, account);
// 在服务端控制台打印已创建新账户的提示信息
System.out.println("新开账户:" + name);
}
// 返回找到的账户或新开设的账户
return account;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -