java中类之间的一对一关系

时间:2015-03-03 09:21:28

标签: java class relationship

我必须在Java SE中实现以下类,但我无法弄清楚如何实现ATMCard和Account之间的一对一关系。我研究过(可能是错误的关键字)但找不到任何东西。提前谢谢..

Class diagram, mentioned in the question

3 个答案:

答案 0 :(得分:3)

首先,我发现您的模型对于ATMCardAccount来说有点奇怪:

  • 不是与PIN相关的ATMCard而不是Account
  • 不是与custName相关的Account

然后,1-1关系意味着你将拥有其中一个:

  • Account类的成员类型为ATMCard
  • ATMCard类的成员类型为Account
  • 以上关系。
  • 以上都不是,但是将根据ID获取相关实体的getter。例如,您可以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; 
}

您可以保护ATMCardAccount构造函数以强制使用公共工厂方法。

注意:您可以使用SpringGuice等框架来提供此类工厂注入服务。

答案 1 :(得分:1)

要在ATMCardAccount之间建立一对一关系,您必须在Account课程中创建ATMCard个实例。

答案 2 :(得分:1)

我看到ATM的方式不需要与ATMCardAccount相关联。想一想您在其他银行的ATMCard使用银行ATM会发生什么情况?或者您的银行不允许ATMCard在其他银行ATM

中使用

这些应该是ATM取款操作的一部分。

您可以拥有从AccountATMCard

的双向关系