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 工厂模式示例的主要内容,如果未能解决你的问题,请参考以下文章