java 中 类 之间的一对一关系

one to one relationship between classes in java

我必须在 Java SE 中实现以下 类,但我不知道如何实现 ATMCard 和帐户之间的一对一关系。我已经研究过(可能使用了错误的关键字)但找不到任何东西。提前谢谢你..

要在 ATMCardAccount 之间创建一对一关系,您必须在 ATMCard class.[=14= 中创建 Account 实例]

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

  • PINATMCard 相关而不是与 Account 相关吗?
  • custName 不是与 Account 相关吗?

那么,1-1关系意味着你将拥有以下其中之一:

  • Account class 有一个 ATMCard
  • 类型的成员
  • ATMCard class 有一个 Account
  • 类型的成员
  • 以上关系。
  • none 以上,但 getter 将根据 ID 获取相关实体。例如,您可以有一个 ATMCard$getAccount(),它将根据 accountNo 检索相关的 Account

这真的取决于你需要的模型逻辑。

正如@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 构造函数以强制使用 public 工厂方法。

注意:你可以使用像SpringGuice这样的框架来提供这种factoryinjection服务。

我的看法是 ATM 不需要与 ATMCardAccount 相关。想想你的银行 ATMCard 被其他银行的 ATM 使用会怎样?或者您的银行不允许 ATMCard 在其他银行使用 ATM

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

您可以拥有从 AccountATMCard

的双向关系