DAO 工厂模式示例

Posted

技术标签:

【中文标题】DAO 工厂模式示例【英文标题】:DAO Factory Pattern Example 【发布时间】:2014-08-04 02:02:16 【问题描述】:

我使用此链接作为我的基础link as 给出的示例似乎最简单,可以从网络上的其他示例开始。谁能解释一下原因:

    我能理解实现和接口代码。但是他们为什么要返回一个接口呢?

    此外,当他们检查字符串是否等于“jdbc”时,在这两种情况下,它们都会返回相同的语句。这就是我感到困惑的地方。他们不应该返回同一接口的不同实现吗?

谢谢!

【问题讨论】:

它们不是返回接口 UserDAO ,而是返回实现了 UserDAO 接口并且是一个具体类的 UserDAOImpl 。 为什么这被否决了? 【参考方案1】:

    工厂返回一个接口,以便将不同的实现与使用它们的模块解耦。例如,如果 UserDAOImpl 出于某种原因会更改其改名为 UserDAOConcrete,您只需要更改工厂代码,无需其他任何内容,因为其他所有内容都使用接口(没有更改)

    我猜用户只是为了简单起见重新调整相同的实现,因为它与问题本身无关。该代码是一个示例。实际上,您将根据传递给工厂方法的参数返回不同的实现。另请注意,他也可能已经这样做了,因为 last else默认实现,以防之前的条件未通过。默认实现可能是他已经用不同的参数返回的那个

【讨论】:

1.更重要的是,它允许您根据上下文拥有不同的 DAO 实现。例如,您可能有一个使用 Hibernate 实现的 UserDaoJpa 用于您的生产软件,以及一个使用 Mockito 实现的 UserDaoMock 用于您的自动化测试套件。 很重要的原因

以上是关于DAO 工厂模式示例的主要内容,如果未能解决你的问题,请参考以下文章

工厂设计模式和DAO设计模式有啥区别

设计模式之工厂方法模式

设计模式之简单工厂模式

简单工厂设计模式

使用工厂模式与泛型对三层架构的每一层进行解耦

设计模式简单工厂模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )