2012-09-18 95 views
-1

这是在C++中实现工厂方法设计模式的最佳方式。我在论坛中遇到了各种各样的实现 - 使用静态函数,非静态函数,模板函数,STL向量/映射,共享指针,boost库等。我可以理解使用STL向量/映射,共享指针& boost库工厂方法 - 用于跟踪对象,但我并不放弃使用静态函数/非静态函数工厂方法设计模式实现的利弊。工厂方法:静态函数VS C++中的非静态函数实现

如果有人能帮助我理解其中的差异,我将不胜感激。如果可能的话,请你用C++中的高级通用实现来解释我(例如带有模板的工厂方法头文件,STL向量/映射)。请不要包含任何增强库实体。

高级谢谢。

回答

2

有多种原因可以使用工厂模式。在最基本的层面上,这是因为你不知道在施工时确切地说你将构造什么类型的对象。在这种情况下,一个简单的指向工厂函数的指针通常就足够了。加载DLL时,函数指针可能会被设置。

有时您使用工厂方法,因为您想跟踪工厂正在创建的所有对象。在这种情况下,你的工厂方法可能是一个虚函数,你的抽象工厂将有一个向量存储指向所有创建对象的指针。可能有助于通知。

模式是相当抽象的概念类似城市环城公路。它为各种类型的问题及其解决方案提供了标准词汇。然而,确切的解决方案取决于手头的问题。