什么时候工厂合适?

Mar*_*lon 2 design-patterns factory-pattern

取自维基百科:

在面向对象的计算机编程中,工厂是用于创建其他对象的对象.它是构造函数的抽象,可用于实现各种分配方案.

有人可以解释什么时候需要工厂级或有益吗?

我目前正在开发一个项目,我有一个类,并使用构造函数初始化一个对象(呃!),但它可能会失败,根本不会初始化.我有一个Success属性来检查它是否正确创建.这是一个应该实施工厂类的好例子吗?这样Create()方法可以返回null,我可以摆脱Success属性.我有正确的想法吗?

tda*_*ers 7

Factory情境的教科书示例是当您有一个接口和多个实现时,但您不希望公开这些实现.您实现了一个工厂(方法或类),它根据您传递的参数生成不同实现的实例; 但是,由于它通过接口类型返回它们,因此调用者不会受到实现细节的负担.

真实世界的例子:假设你已经定义了一个接口,一个流阅读器,并实现从本地文件,网络资源和标准输入读取.然后编写一个采用单个参数(URI)的工厂方法,并返回一个合适的读取器.调用者不需要知道实现细节.最好的部分是,当您决定要支持另一种输入方法时,比如数据:URI,您只需添加另一个实现并将其添加到工厂 - 您无需更改调用代码中的任何内容.