读书人

设计模式之工厂模式的有关问题

发布时间: 2013-09-07 14:12:44 作者: rapoo

设计模式之工厂模式的问题
简单工厂模式很好理解,有基类product和派生类productA和productB,那么告诉factory该生产出哪种对象,就可以获取其指针。但如果增加productC就需要修改factory,这就违反了开放-封闭原则。所以有了工厂模式,工厂模式把factory作为基类,派生出生产productA的工厂factoryA和生产productB的工厂factoryB。如果需要增加productC就再来个factoryC。

对于用户来说,简单工厂模式只要记住factory和product就行。而工厂模式却需要知道product,factory,factoryA,factoryB…… 这个比工厂模式多了。对于开放-封闭原则来说,我们选择工厂模式。但在某种程度上我觉得丢弃工厂,记住product,productA,productB复杂度一样嘛。比如我们需要productA,用工厂模式:product *p = fac.createProductA(),不用工厂模式就是product *p = new productA()。我觉得这两句代码没啥差别。这时使用工厂模式的好处在哪里?请大神指教
[解决办法]
maybe for the factory pattern, you should write like this:
product *p = fac.createProduct("A");
[解决办法]
or like this:
ProductA *p = fac.createProduct();
[解决办法]
在C++中使用工厂模式的优势其实很不明显,因为C++本身不支持反射机制。

在C#/JAVA等语言中使用工厂模式就感觉好很多。

读书人网 >C++

热点推荐