有人可以告诉我为什么会引入FactoryMethod设计模式吗?我的问题是同样可以使用工厂模式本身来解决?
例如,如果我看到Factory Pattern和FactoryMethod Pattern之间的区别,Factory Pattern将返回Concrete IMplementation,其中FactoryMethod Pattern返回Factory对象作为其返回类型??
请告诉我为什么要引入FactoryMethod?
答案 0 :(得分:1)
简而言之:
Factory Method
是一种设计模式,可以从其他代码中“隐藏” 具体类型 的实例化,从而提供松耦合。
Abstract Factory
是一种设计模式,用于提供不同类型的工厂,负责创建一组特定的具体类型。因此,您可以在抽象工厂之间切换,从而最终获得代码中不同的具体对象实例。
所以Abstract Factory
是一个进步,即Factory Method
的生成。在简单的项目中,后者就足够了。在具有复杂层次结构的项目中,需要Abstract Factory
。
答案 1 :(得分:0)
正如你可以阅读wiki'抽象工厂模式,一个经常使用工厂方法实现的模式'。
查看此图片http://upload.wikimedia.org/wikipedia/commons/a/a7/Abstract_factory.svg
设计模式通常/始终相互连接,这样他们就向我们展示了模式概念。
关心卢卡斯。
答案 2 :(得分:0)
AbstractFactory模式是另一个抽象层次。用户不知道他将获得的对象类型,并且对此不感兴趣。 AbstractFactory决定使用哪个方法创建用户将接收的具体对象。
在方法工厂中,用户决定使用哪种方法创建对象并知道他得到了什么。但这并不总是与他有关。
如果我在Method Factory中请求一个按钮,我需要知道我是否需要LinuxButton或WindowsButton或OSXButton。在AbstractFactory中,我请求一个按钮,我收到一个按钮......而AbstractFactory将决定按钮的创建方式,知道我们的操作系统。
答案 3 :(得分:0)
根据对抽象工厂的理解,当您拥有可以创建一系列对象的工厂时,将使用抽象工厂模式。虽然有工厂类的抽象。
如果工厂方法对工厂类有抽象,它会生成一组产品对象。