工厂方法可以返回多个实例吗?

时间:2011-02-19 09:28:46

标签: design-patterns language-agnostic factory-pattern

如果它返回一个类的实例,它是一个factory method但如果它返回多个(一组数组)实例,它是一个工厂方法吗?

3 个答案:

答案 0 :(得分:5)

如果你需要它来返回多个实例,那么不管它是如何被调用的。我会说这确实是一种工厂方法,但这并不重要。

也许你可以有一个工厂方法来返回一个实例,然后另一个实例多次调用第一个实例。

答案 1 :(得分:3)

如果T是你想要创建的类型,你的是T []的工厂方法,所以是的,它仍然是工厂方法,但不是T :-)(由T []我的意思是一个T的数组,或等同于您的语言)

答案 2 :(得分:1)

是的,你甚至可以获得更多异国情调:

int pipe(int fildes[2]);
     

pipe()函数应创建一个管道并放置两个文件描述符,每个文件描述符分别为参数fildes [0]和fildes [1],它们引用管道读写端的打开文件描述。

这是一个工厂,它“返回”(使用out参数和错误代码的实际返回值)两个与管道两端对应的不同的对象。

就此而言,不要过于依赖“工厂方法”或甚至设计模式。设计模式非常有用,因为它们为我们每天看到的内容提供了一个通用名称,然后指出了各种常见的陷阱或注意事项 - 而不是因为我们需要严格地将代码模型化为某个名称。