java中类之间的一对一关系

java中类之间的一对一关系,java,class,relationship,Java,Class,Relationship,我必须在JavaSE中实现以下类,但我不知道如何实现ATMCard和Account之间的一对一关系。我已经研究过(可能有错误的关键字),但没有找到任何东西。先谢谢你 要在ATMCard和Account之间创建一对一的关系,您必须在ATMCard类中创建Account实例。首先,我发现您的模型对于ATMCard和Account来说有点奇怪: PIN是否与ATMCard相关,而与账户相关 custName是否与账户相关 然后,1-1关系意味着您将拥有以下其中之一: Account类有一个类型为

我必须在JavaSE中实现以下类,但我不知道如何实现ATMCard和Account之间的一对一关系。我已经研究过(可能有错误的关键字),但没有找到任何东西。先谢谢你


要在
ATMCard
Account
之间创建一对一的关系,您必须在
ATMCard
类中创建
Account
实例。

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

  • PIN
    是否与
    ATMCard
    相关,而与
    账户
    相关
  • custName
    是否与
    账户相关
    
然后,1-1关系意味着您将拥有以下其中之一:

  • Account
    类有一个类型为
    ATMCard
  • ATMCard
    类的成员类型为
    Account
  • 这两种关系
  • 以上都不是,而是基于ID获取相关实体的getter。例如,您可以有一个
    ATMCard$getAccount()
    ,它将基于
    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
这样的框架来提供这种工厂和注射服务。

我认为这是
ATM
不需要与
ATMCard
帐户相关。想想你的银行在另一家银行的ATM机上使用了什么?或者您的银行不允许将
ATMCard
用于其他银行
ATM

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


您可以拥有从
帐户
ATMCard

的双向关系。我假设这是作业,如果是,请将其标记为作业。另外,请说明您尝试了什么-很可能您已经创建了
ATMCard
类。鉴于
ATMCard
CustName
accountNo
都有一对一的关系,因此了解如何将这种关系添加到
帐户
,应该不会有太大的想象飞跃。如果你仍然不确定,你真的最好与你的导师讨论,而不是张贴在这里,希望得到答案。事实上,这不是一个家庭作业,而是我的硕士论文的一部分,我不是试图从人们那里找到源代码,而是学习它的逻辑,这是这个网站的目的还是?顺便说一句,谢谢你的回答。为了成功建立这种双向关系,我应该在Account中创建ATMCard实例,同时在ATMCard中创建Account实例吗?你不能同时做这两件事(在card中创建Account实例,反之亦然)。最灵活的当然是有一个卡片工厂,它将通过受保护的构造函数创建两个对象,并通过受保护的setter设置关系。通过这种方式,您可以加强两个对象之间的强关系。应避免双向关系,这会使模型变得脆弱。
账户
了解
ATMCard
有什么好处?只要创建
帐户
就可以将其注入
ATMCard
中,使关系从
ATMCard
工作到
帐户
,并完成工作。@atishhimpi是的,但不要在
ATMCard
中创建
帐户
,通过构造函数注入一个