Builder设计模式和Factory设计模式之间的区别是什么?
哪一种更有利?为什么?
如果我想测试和比较/对比这些模式,我如何将我的发现表示为图表?
Builder设计模式和Factory设计模式之间的区别是什么?
哪一种更有利?为什么?
如果我想测试和比较/对比这些模式,我如何将我的发现表示为图表?
当前回答
逐步构建复杂对象:构建器模式通过使用单一方法创建一个简单对象:工厂方法模式使用多工厂方法创建对象:抽象工厂模式
其他回答
区别很明显在生成器模式中,生成器将为您创建特定类型的对象。你必须告诉我什么建筑商必须建造。在工厂模式中,使用抽象类可以直接构建特定对象。
在这里,生成器类充当主类和特定类型类之间的中介。更抽象。
两者都是创造模式,以创建对象。
1) 工厂模式-假设您有一个超级类和N个子类。对象的创建取决于传递的参数/值。
2) 生成器模式-创建复杂对象。
Ex: Make a Loan Object. Loan could be house loan, car loan ,
education loan ..etc. Each loan will have different interest rate, amount ,
duration ...etc. Finally a complex object created through step by step process.
工厂模式允许您一次创建一个对象,而生成器模式允许您中断对象的创建过程。这样,您可以在创建对象期间添加不同的功能。
对于设计模式,通常没有适用于所有情况的“更有利”解决方案。这取决于您需要实施什么。
来自维基百科:
Builder专注于构建一步一步复杂的物体。摘要工厂强调产品系列对象(简单或复杂)。生成器将产品作为最终产品返回步骤,但就抽象而言工厂关心,产品得到立即返回。生成器通常构建一个复合。通常,设计开始时使用工厂方法(不那么复杂,更多可定制,子类激增)并向抽象工厂发展,原型或生成器(更灵活,更复杂)发现更灵活的地方需要。有时创造模式是互补的:构建者可以使用要实现的其他模式构建哪些组件。摘要工厂、建造商和原型可以使用Singleton实现。
工厂设计模式维基百科条目:http://en.wikipedia.org/wiki/Factory_method_pattern
构建器设计模式的维基百科条目:http://en.wikipedia.org/wiki/Builder_pattern
生成器模式和工厂模式看起来都很像肉眼,因为它们都为您创建对象。
但你需要仔细观察
这个现实生活中的例子将使两者之间的区别更加明显。
假设你去了一家快餐店,点了食物。
1) 什么食物?
披萨
2) 什么浇头?
辣椒,番茄,烤鸡,无菠萝
因此,不同种类的食物是通过工厂模式制作的,但特定食物的不同变体(口味)是通过构建模式制作的。
不同种类的食物
披萨、汉堡、意大利面
披萨的变体
只有奶酪、奶酪+番茄+辣椒、奶酪+西红柿等。
代码示例
您可以在这里看到这两种模式的示例代码实现生成器模式工厂模式