我使用此链接作为我的基础link因为给出的示例似乎最简单的从网上的其他示例开始。有人可以解释原因:
我可以理解实现和接口代码。但他们为什么要返回界面呢?
此外,虽然他们正在检查字符串等于" jdbc",但在这两种情况下,它们都会返回相同的语句。这是我感到困惑的地方。他们不应该返回同一界面的不同实现吗?
谢谢!
答案 0 :(得分:1)
工厂正在返回一个接口,因此它将不同的实现与使用它们的模块分离。
例如,如果 UserDAOImpl 由于某种原因会改变它的名称为 UserDAOConcrete ,您只需要更改工厂代码,而不需要其他任何内容,因为其他所有内容都是使用界面(它没有改变)< / p>
我想用户只是为了简单而重新调整相同的实现,因为它与问题本身无关。代码是一个示例。实际上,根据传递给工厂方法的参数,您将返回不同的实现。还请注意,他也可能已经这样做了,因为最后一个是一个默认实现,以防先前的条件没有通过。默认实现可能是他已经使用不同的参数