不确定组织
比方说,我们有“用户”和“酒店”模型班。 我会使用User_Mapper和Hotel_Mapper来加载/保存/删除等。我想让用户能够标记他们的“最喜欢的”酒店。 在数据库中,我有我的user_favourite_hotels
表,这是一个简单的链接表,还有一个用于订阅酒店更新的字段。
列出用户最喜爱的酒店时,您如何从API的角度期待这一点? 我认为这部分应该是Hotel_Mapper上的“findFavouritesByUserId”方法,但不是说它“感觉”是正确的 - 但是一位同事建议“最爱”由用户拥有,因此应该在User_Mapper上。
也许我应该有一个User_Hotel_Favourites_Mapper? 我正在考虑将“收藏夹”数据合并到User对象中,以便每当User对象被保存和加载时。 但我不确定是否最好将其分割出它自己的对象和映射器。
我会很欣赏任何关于如何最好地为上述和任何优点/缺点/体验设置API的建议。
非常感谢,
詹姆士。
这种(诚然是退休的)模式和实践指导设计数据层组件意味着您将该方法放在您从调用中获得的对象类型的映射器中。
如果您有返回特定类型业务实体的方法,请将这些方法放置在该类型的数据访问逻辑组件中。 例如,如果您要检索客户的所有订单,请在订单数据访问逻辑组件中实施该功能,因为您的返回值属于订单类型。 相反,如果您要检索已订购特定产品的所有客户,请在客户数据访问逻辑组件中实施该功能。
因此,在您的示例中,它将在Hotel Mapper中返回酒店。
如果您想为用户存储最喜欢的酒店,则使用UserMapper
,它注意到User
域对象已更改了收藏夹,并更新了用户和user_favorite_hotels的两个表(您只需要酒店ID)。
当您检索某个用户的最爱酒店时,您使用HotelMapper
并将过滤器设置为基于User
,因为您将使用Hotel
实例。
考虑到这是2年多前提出的,我不确定现在答案是否重要。 但无论如何,这是我的想法。
如果User
可以拥有多种类型的收藏夹(包括Hotel
),则可以通过UserFavourites
抽象来涵盖所有可能的收藏类型。 UserFavourites
可以公开getItems()
方法来获取底层收藏夹。
这可以在管理员类的帮助下进行管理,以返回可以调用getItems()
方法的适当收藏夹对象(例如, FavouriteHotels
)。
上一篇: unsure about organisation
下一篇: How to intercept execution of a RoutedCommand within the view? (WPF / MVVM)