两个互相引用的类,用工厂模式创建时,死循环的问题

假设有电脑、人 这么两个类,如图所示。
class person
{

computer myComputer;
}

class computer
{

person myOwner;
}

用工厂模式
如果我要创造小明这个人,那么我要用人的工厂去创造小明,在创造的时候我要set他有个HP电脑,
那么我又要用电脑工厂去创造HP电脑。但是创造HP电脑的时候我又要去用人的工厂创造小明这个人,这不就是循环下去了吗?
所以我纳闷了,1要么这样设计类是不正确的,2要么有其他办法解决这个问题
学习得不好,请大神解答

suannai0314
鹳狸媛 楼主的这个问题解决了么?下边的答案能解决问题么?如果可以麻烦点击答案旁的√采纳哦~如果没有也可以将自己的答案贴上然后进行采纳的。
大约 6 年之前 回复

3个回答

小明应该不是抱着电脑出生的, 而HP电脑在生产时应该也没有打着小明的签。 所以构造时可能不必提供相应的参数。当然抽象可能不一定需要完全遵照现实。

其次,电脑一般情况下对于谁是自己的Owner可能不太关心,如果可以去除这种依赖最好,单向依赖比双向依赖简单, 简单就一定是好的。

lwfhunter
如燕盘旋而来的思念 谢谢回答,简单就是好,双向关联改为但相关联
5 年多之前 回复

这两个类的设计是有问题的,电脑这个类中可以不要拥有者,在创建人这个类的时候可以实例化一个电脑类,然后这个关联信息保存一个地方,查看电脑拥有者的时候去查以保存的就好了

支持楼上,创建一个人的时候,不可能让他衣帽整齐,拿着名片出生吧,是生下来以后才有的其他东西。所以在工厂里创建人的时候,只要保证其有这个属性几个,并不一定赋值。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

0
关于动态创建的问题,内容如下。
1
java 一个类的对象访问私有属性的问题
1
在C++中,很简单的引用返回值函数,可以返回两个引用的相加和吗
1
关于C++将类时,类中的数组需不需要用指针建立的问题
0
C#的抽象类、抽象方法实心两个数的加减乘除问题
2
问点java的基础常识,两个类定义的时候将对方作为自己的成员变量的好处在哪?
1
我在两个stm32f103 之间can通信还有问题
2
struts2:一个action类里有两个方法,我访问其中的一个方法配置的action
0
如何理解httpServlet类中service方法里的两个参数
1
一个WEB服务部署到WAS上的两个节点,想让他们根据业务规则互相转发数据
1
IOS Core Data部分两个Entity之间的RelationShip的存储问题
1
win7任务栏的图标创建后,程序启动时的图标没有与创建好的重合
1
一个CWnd对象的onpaint函数中,动态Create两个子窗口时造成wincore.cpp中的断言错误。
2
一张表两个主键 在另外一张表中怎么用外键引用它?
3
两个首字母大小写不同的类会不会冲突?
0
在VS2005中单个工程里建立两个CWinThread的派生类,编译时发出C2084错误,怎么解决?
1
Hibernate中@ManyToOne与@OneToMany注解查询结果用gson序列化出现循环引用问题
0
关于Resource注入原型对象的问题
0
hibernate 一张表的两个外键引用同一个主键 怎样配置被引用的类
0
在配置对象onetomany 双向时候,怎么避免json死循环