有人能告诉我为什么引入FactoryMethod设计模式吗?因为我的问题是,使用工厂模式本身也可以达到同样的效果吗?
例如,如果我看到工厂模式和FactoryMethod模式之间的区别,工厂模式返回具体的IMplementation,而FactoryMethod模式返回工厂对象作为其返回类型??
请告诉我为什么要引入FactoryMethod ??
发布于 2012-04-01 17:48:02
简而言之:
Factory Method是一种设计模式,它向代码的其余部分“隐藏”了具体类型的实例化,从而提供了松散耦合。
Abstract Factory是一个设计模式,它被引入来为提供不同类型的工厂,这些工厂负责创建一组特定的具体类型。因此,您可以在抽象工厂之间切换,并最终获得代码中对象的不同具体实例。
所以Abstract Factory是一个进步,也就是Factory Method的泛化。在简单的项目中,后者就足够了。在具有复杂层次结构的项目中,需要Abstract Factory。
发布于 2012-04-01 16:56:02
正如你可以在wiki上读到的“抽象工厂模式,一种经常使用工厂方法实现的模式”。
查看这张图片http://upload.wikimedia.org/wikipedia/commons/a/a7/Abstract_factory.svg
设计模式经常/总是彼此联系在一起,通过这种方式,它们向我们展示了模式的概念。
问候卢卡斯。
发布于 2012-04-01 17:02:44
AbstractFactory模式是另一个级别的抽象。用户不知道他将获得的对象的类型,它对此也不感兴趣。AbstractFactory决定使用哪种方法来创建用户将收到的具体对象。
在方法工厂中,用户决定使用哪个方法来创建对象,并知道他得到了什么。但这并不总是关系到他。
如果我在方法工厂中请求一个按钮,我需要知道我想要的是LinuxButton、WindowsButton还是OSXButton。在AbstractFactory中,我请求一个按钮,我收到一个按钮...AbstractFactory将决定按钮是如何创建的,知道我们的操作系统。
https://stackoverflow.com/questions/9963090
复制相似问题