获取两组数据的dao

Dao that retrieves two sets of data

假设我们有一个处理 Vehicles 数据库 table 中的 Vehicles 的应用程序。

所有处理逻辑相同,可用于处理轿车和卡车。

有一个关键点,应用程序将从 DAO 车辆请求,这取决于它可能需要轿车或卡车(不是两者)的过程。

处理这个问题的好方法是什么?

请记住以下几点:

  1. 向 DAO 方法发送一个参数,说明我们需要哪种类型的数据。
  2. 将 DAO 设置为 "mode" 以专注于一组特定的数据。
  3. 每组数据有两个 DAO 实现。也许有一个抽象 DAO 和两个实现。并且service/controller可以使用必要的DAO。

任何人都可以推荐解决方案或评论并推荐以上任何一项吗?

谢谢

因为 dao 可以在多线程环境中被不同的调用使用,所以不要使用 "mode"。它可能导致无效调用。考虑以下步骤:

Thread 1 set dao mode to truck
Thread 2 set dao mode to sedan
Thread 1 read data. It reads sedans instead of trucks

带有一个附加参数(类型)的解决方案是一个很好的解决方案,提取卡车(或轿车)可以成为请求的一部分。

请注意,如果将来可能有更多车辆,则此解决方案不是最佳解决方案。它打破了开闭原则。 此处对 OCP 的简要描述来自 Wikipedia:

software entities … should be open for extension, but closed for modification.

因此,解决这种情况的最佳方法是拥有一个 Dao 接口和两种不同的 Dao 实现,一种用于轿车,一种用于卡车。如果将来会存在其他车辆,则无需修改现有代码,但只需编写一个新的 class 实现 dao 接口。这保证了开闭原则。