我必须在Java SE中实现以下类,但我无法弄清楚如何实现ATMCard和Account之间的一对一关系。我研究过(可能是错误的关键字)但找不到任何东西。提前谢谢..
答案 0 :(得分:3)
首先,我发现您的模型对于ATMCard
和Account
来说有点奇怪:
PIN
相关的ATMCard
而不是Account
?custName
相关的Account
? 然后,1-1关系意味着你将拥有其中一个:
Account
类的成员类型为ATMCard
ATMCard
类的成员类型为Account
ATMCard$getAccount()
根据Account
检索相关的accountNo
。 这实际上取决于你需要的模型逻辑。
正如@NickHolt建议的那样,我会选择你可以通过工厂初始化的单向关系船,例如
public static ATMCard createCard(String name, int accNo, int pin, int initBal) {
Account acc = new Account(name, accNo, initBal);
ATMCard card = new ATMCard(pin);
card.setAccount(acc);
return card;
}
您可以保护ATMCard
和Account
构造函数以强制使用公共工厂方法。
注意:您可以使用Spring
或Guice
等框架来提供此类工厂和注入服务。
答案 1 :(得分:1)
要在ATMCard
和Account
之间建立一对一关系,您必须在Account
课程中创建ATMCard
个实例。
答案 2 :(得分:1)
我看到ATM
的方式不需要与ATMCard
或Account
相关联。想一想您在其他银行的ATMCard
使用银行ATM
会发生什么情况?或者您的银行不允许ATMCard
在其他银行ATM
这些应该是ATM取款操作的一部分。
您可以拥有从Account
到ATMCard