我刚刚在SO上阅读了一篇讨论Singleton与Static Classes的优点的帖子。
有些人提到模式 X 似乎更像是“工厂”而非单身“模式”。
“工厂”和“设计模式”之间有什么区别?
答案 0 :(得分:9)
“工厂”是一种特定的设计模式: http://en.wikipedia.org/wiki/Factory_method_pattern
同样“单身”也是一种设计模式: http://en.wikipedia.org/wiki/Singleton_pattern
答案 1 :(得分:1)
工厂和单身人士是众多设计模式中的一部分。
工厂模式可以实现为生成对象的单例模式。工厂也可以是实例类,因此不是单例。同样,单例可以是工厂,但它也可以是其他东西,如全局设置管理器或事件注册表。
答案 2 :(得分:1)
答案 3 :(得分:0)
工厂是Design Pattern - 而不是相反。
答案 4 :(得分:0)
你有点不对劲。 “工厂”也是一种模式,与“单身人士”形成鲜明对比。
答案 5 :(得分:0)
答案 6 :(得分:0)
工厂是一种设计模式:-)和Singleton一样。有人可能会说单身人士是一种工厂。它在需要时创建一个对象,并使用一个set chaching策略(一旦创建后它总是返回相同的对象)但这是麻烦,并且通常只会在大多数关于结构的争论中混淆
答案 7 :(得分:0)
工厂是一种设计模式。基本上工厂返回一个依赖于调用类需求的类。工厂返回的所有类应该共享相同的接口,因此您可以对它们调用相同的公共方法(尽管每个类实现该方法的方式可能不同)。
这是一个很好的链接http://en.wikipedia.org/wiki/Factory_method_pattern
答案 8 :(得分:0)
很多答案,但似乎没有人真正区分这两种模式。让我试着看看我是否不能混淆问题。
Singleton是一种模式,它限制您的系统只创建给定类的一个实例。该限制通常通过创建一个Factory来实现,该Factory将创建该类的实例(如果不存在)或在后续调用中返回已创建的实例。
工厂用于创建单身人士和其他情况。在许多情况下,它可用于替换“新”。一个优点是您可以编写工厂以允许返回的对象类型为“Set”。这样,您的测试框架可以“设置”一个模拟对象而不是真实对象 - 然后系统的其余部分将使用模拟对象。
另一种情况可能是让工厂根据要返回的类型或数据(可能是XML)进行评估。它们还用于实现依赖注入,其中工厂查看您需要的内容并构建对象链以满足这些需求。