【发布时间】:2018-11-19 10:04:24
【问题描述】:
工厂方法:
大家好。我正在寻找简单工厂和工厂方法之间的区别。我知道结构差异(上图),但我无法理解用例的差异。例如,这是对工厂方法的解释:
在工厂方法模式中,我们将引入一个名为的新接口 ‘IMobileFactory’和两个具体实现的‘NokiaFactory’和 “苹果工厂”。这些具体的类控制对象的创建。
在我的示例中,客户想要一个诺基亚对象。所以给出了步骤 下面。
1.客户端将加载对‘NokiaFactory’的引用。但是客户端不会像简单工厂那样直接引用“诺基亚工厂”类 图案。客户通过 接口‘IMobileFactory’。
2.然后客户端调用“CreateMobile()”方法,该方法将返回一个“IMobile”类型的对象。
3.这里我们要通过一些配置或参数告知客户端要使用的具体实现。
第一步看不懂:
但客户端不会像 简单的工厂模式。客户参考具体实现 通过接口“IMobileFactory”。
所以客户端会这样写:
IMobileFactory factory = LoadFactory("NokiaFactory");
那么为什么它有用且更好呢?有什么好处?为什么我不应该写这个:
NokiaFactory factory = new NokiaFactory();
或者那又如何:
IMobileFactory factory = new NokiaFactory();
【问题讨论】:
-
两者都不是真正的粉丝;我宁愿作者在构造函数调用期间注入对
IMobileFactory实例的引用。无论哪种方式,目标都是避免直接引用具体类并使用接口。使用接口将使您的代码更灵活地用于测试/新用例,因为它不与单个实现耦合。
标签: java oop design-patterns factory-pattern factory-method