Java 检索两组数据的Dao
假设我们有一个处理车辆数据库表中车辆的应用程序 所有处理逻辑都是相同的,可用于处理轿车和卡车 有一个关键点,应用程序将请求DAO车辆,这取决于它可能需要轿车或卡车(而不是两者)的过程 处理这个问题的好方法是什么 记住以下几点:Java 检索两组数据的Dao,java,dao,Java,Dao,假设我们有一个处理车辆数据库表中车辆的应用程序 所有处理逻辑都是相同的,可用于处理轿车和卡车 有一个关键点,应用程序将请求DAO车辆,这取决于它可能需要轿车或卡车(而不是两者)的过程 处理这个问题的好方法是什么 记住以下几点: 向DAO方法发送一个参数,说明我们需要哪种类型的数据 将DAO设置为“模式”,以关注特定的数据集 对于每组数据有两个DAO实现。可能有一个抽象DAO和两个实现。服务/控制器可以使用必要的DAO 有人能推荐一个解决方案或评论,并推荐上述任何一种吗 谢谢,因为dao可以在多线
谢谢,因为dao可以在多线程环境中由不同的调用使用。不要使用“模式”。这可能会导致无效调用。考虑以下步骤:
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的简要说明:
软件实体…应为扩展打开,但为扩展关闭
修改
因此,解决这种情况的最佳方法是有一个dao接口和两个不同的dao实现,一个用于轿车,一个用于卡车。如果将来将存在一个额外的工具,则不需要对现有代码进行修改,但只需要编写一个实现dao接口的新类。这保证了开闭原则。谢谢您的解释。开闭原理非常重要。