【发布时间】:2018-02-16 12:24:47
【问题描述】:
工厂方法用于避免违反开闭原则。 而不是通过继承创建对象:
Product myProd = new ConcreteProduct1; // concreteProduct extends abstract product
myProd.doSomething();
我们使用工厂“接口”与相关的具体工厂(实现工厂并覆盖其方法的类):
Factory myFact = new ConcreteFact1; // (2)
Product myProd = myFact.createProd(); // (1)
myProd.doSomething(); // (1)
我读过很多关于工厂方法的文章;我明白,使用工厂方法,可以排除开闭原则的缺陷。但我还是不明白:
- 使用这种设计模式,我们仍然依赖于类 Product (myProd) (1)
- 此外.. 我们与 Concrete-Factories 有依赖关系(客户需要实例化一个特定的想要的具体工厂,并且客户必须知道女巫之一)(2)
感谢您的澄清。
【问题讨论】:
-
您以错误的方式使用工厂。工厂通常有提供“产品”的静态方法。但是在 (2) 处的代码中,您使用 myFact 甚至没有使用它。
-
我做错了,代码更新了。
标签: java oop design-patterns factory-pattern