我发现我需要在多个不相关的类中重新创建类属性.我的方法错了吗?


I'm finding I need to recreate class attributes in multiple un-related classes. Is my methodology wrong?

假设我有三个类:

用户

<

建筑/strong>

汽车

每一个都有它们相关的属性。例如

用户有姓名、年龄、电子邮件
大楼有楼龄、房间、火警
轿车有品牌、座椅、top_speed

假设我有一个数据库,它存储了用户与建筑物、用户与汽车之间的关系。

在我的Building类中,我的save_building方法需要user_id

我有两个选择。

1)我可以在Building类中重新创建user_id属性(冗余和脆弱,需要在Car类中复制)或
2)我可以直接引用user对象并获得user_id

这两个似乎都不对。

当我设置属性时,我也验证它们,然后将这些验证的任何错误存储在对象本身中。如果我使用选项2,在允许我的save_building方法继续之前,我必须检查其他对象的错误,而不是只检查我正在处理的对象。

选项1是正确的前进方式还是选项2?

编辑:为了清晰起见,数据库关系表如下:

user_buildings: user_id, building_id
User_cars: user_id, car_id

Edit2: Making the question non-open ended

用户和建筑物之间的关系必须存储在数据库中,因此显然需要以某种方式在您的类中显示。为了建立对象之间的关系而存储对象引用没有什么冗余的,所以不要这样认为。唯一可能被移除的冗余是用户和建筑物相互指向,而不是只有一个点指向另一个点。这有点像应该使用单链表还是双链表的问题。

给定您的两个选项,我更喜欢选项1,因为在用户未知的情况下,您可以将其设置为null,这比0-1或在用户未在数据库中查询/加入或没有关系存在的情况下的任何整数更具有语义性。

您没有列出的另一个选项是让save_building忽略用户和建筑物之间的关系变化。也许这个功能应该只在用户类中处理。也许您想要一个新的类building-owner类,它的目的是处理这个功能。