当我们在java中实现工厂模式
假设需要实现产品工厂,需要一个Product接口(interface),所有具体类如AProduct、BProduct和< strong>CProduct 将实现产品接口(interface)。
Public Static Product createProduct(String prdName);
工厂方法的签名如上所示。
现在,如果引入了DProduct新产品,那么我们需要更改createProduct方法,因此这种模式不遵循OPEN CLOSE原则。
(开闭原则是你的代码应该对扩展开放,对修改关闭。)
我可以应用任何其他模式来解决我的问题吗?
最佳答案
if a new product say
DProduct
is introduced then we need to make changes to createProduct method
不,或者至少不一定:考虑java.sql.DriverManager
类的反例。它的 getConnection(String url) 显然是一个工厂方法,但它可以轻松处理新驱动程序的添加,而无需对方法本身进行任何更改。
诀窍是让你的工厂可配置:你可以构建一个类的“注册表”,将传递到工厂的键映射到类的名称,并使用反射 API 实例化方法需要返回的类。
关于java - 工厂模式不遵循 OPEN CLOSE 原则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18222168/