工厂的工厂?

时间:2015-11-27 12:49:11

标签: c++ oop design-patterns factory

我有实现MyFactory接口的具体工厂类。我想根据参数得到具体的工厂对象。怎么做?

一种方法是创建工厂工厂[FoF],而FoF将参数化工厂。

还有更优雅的方法吗?

这纯粹是智力锻炼,我在项目中没有遇到任何问题。

1 个答案:

答案 0 :(得分:3)

如果您能够合并两层工厂,那当然是更好的解决方案。如果具有相同的生命周期,这将是可能的。

如果不这样做,那么创建一个工厂工厂就可以了。模式本身没有问题,模式可以嵌套。你甚至可以创建一个工厂工厂(请不要),它会起作用。

但是,您应该为工厂的工厂找到合适的名称,以便明确意图。工厂的工厂听起来不是一个好名字。选择一个在问题域中传达行为的名称比纯粹面向模式的名称更好。

编辑:有人建议您在问题的评论中查看抽象工厂模式。虽然它确实是一个有用的模式,而且是一个优秀的软件工程师应该知道的模式,但抽象工厂不是工厂的工厂:该模式抽象了一组相关工厂,但不是创建他们。不过,了解它会有所帮助。