如果它返回一个类的实例,它是一个factory method但如果它返回多个(一组数组)实例,它是一个工厂方法吗?
答案 0 :(得分:5)
如果你需要它来返回多个实例,那么不管它是如何被调用的。我会说这确实是一种工厂方法,但这并不重要。
也许你可以有一个工厂方法来返回一个实例,然后另一个实例多次调用第一个实例。
答案 1 :(得分:3)
如果T是你想要创建的类型,你的是T []的工厂方法,所以是的,它仍然是工厂方法,但不是T :-)(由T []我的意思是一个T的数组,或等同于您的语言)
答案 2 :(得分:1)
是的,你甚至可以获得更多异国情调:
int pipe(int fildes[2]);
pipe()函数应创建一个管道并放置两个文件描述符,每个文件描述符分别为参数fildes [0]和fildes [1],它们引用管道读写端的打开文件描述。
这是一个工厂,它“返回”(使用out参数和错误代码的实际返回值)两个与管道两端对应的不同的对象。
就此而言,不要过于依赖“工厂方法”或甚至设计模式。设计模式非常有用,因为它们为我们每天看到的内容提供了一个通用名称,然后指出了各种常见的陷阱或注意事项 - 而不是因为我们需要严格地将代码模型化为某个名称。