java 中 类 之间的一对一关系
one to one relationship between classes in java
我必须在 Java SE 中实现以下 类,但我不知道如何实现 ATMCard 和帐户之间的一对一关系。我已经研究过(可能使用了错误的关键字)但找不到任何东西。提前谢谢你..
要在 ATMCard
和 Account
之间创建一对一关系,您必须在 ATMCard
class.[=14= 中创建 Account
实例]
首先,我发现您的模型对于 ATMCard
和 Account
有点奇怪:
-
PIN
与 ATMCard
相关而不是与 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;
}
您可以保护 ATMCard
和 Account
构造函数以强制使用 public 工厂方法。
注意:你可以使用像Spring
或Guice
这样的框架来提供这种factory和injection服务。
我的看法是 ATM
不需要与 ATMCard
或 Account
相关。想想你的银行 ATMCard
被其他银行的 ATM
使用会怎样?或者您的银行不允许 ATMCard
在其他银行使用 ATM
这些应该是 ATM 取款操作的一部分。
您可以拥有从 Account
到 ATMCard
的双向关系
我必须在 Java SE 中实现以下 类,但我不知道如何实现 ATMCard 和帐户之间的一对一关系。我已经研究过(可能使用了错误的关键字)但找不到任何东西。提前谢谢你..
要在 ATMCard
和 Account
之间创建一对一关系,您必须在 ATMCard
class.[=14= 中创建 Account
实例]
首先,我发现您的模型对于 ATMCard
和 Account
有点奇怪:
-
PIN
与ATMCard
相关而不是与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;
}
您可以保护 ATMCard
和 Account
构造函数以强制使用 public 工厂方法。
注意:你可以使用像Spring
或Guice
这样的框架来提供这种factory和injection服务。
我的看法是 ATM
不需要与 ATMCard
或 Account
相关。想想你的银行 ATMCard
被其他银行的 ATM
使用会怎样?或者您的银行不允许 ATMCard
在其他银行使用 ATM
这些应该是 ATM 取款操作的一部分。
您可以拥有从 Account
到 ATMCard