Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 何时使用抽象工厂,何时使用工厂方法?_Design Patterns_Oop - Fatal编程技术网

Design patterns 何时使用抽象工厂,何时使用工厂方法?

Design patterns 何时使用抽象工厂,何时使用工厂方法?,design-patterns,oop,Design Patterns,Oop,有人能给我一个清晰的例子,说明什么时候最适合使用去AF而不是FM设计模式吗 抽象工厂 FM:工厂法 最好的情况是,抽象工厂是当您想要控制对象组或对象族的创建时,这些对象组或对象族之间有一对一的映射。 e、 窗口可以是SwingWindow、AWTWindow或其他框架窗口。类似地,每个族中都可以有按钮、窗格和控件。 您将使用abstractfactory的正确实现来创建正确的对象。 e、 如果你想用Swing替换AWT,你只需要替换掉工厂对象,其他的一切都可以正常工作 (参见示例) Factor

有人能给我一个清晰的例子,说明什么时候最适合使用去AF而不是FM设计模式吗

抽象工厂 FM:工厂法


最好的情况是,

抽象工厂是当您想要控制对象组或对象族的创建时,这些对象组或对象族之间有一对一的映射。
e、 窗口可以是SwingWindow、AWTWindow或其他框架窗口。类似地,每个族中都可以有按钮、窗格和控件。
您将使用abstractfactory的正确实现来创建正确的对象。 e、 如果你想用Swing替换AWT,你只需要替换掉工厂对象,其他的一切都可以正常工作

(参见示例)

Factory方法是您希望控制一种类型对象的创建的方法

  • FM:反序列化时最常用: 基于串行输入创建类
  • AF:当应用程序已启动时最常用 要灵活,就要与众不同 工厂可以提供不同的服务 内部行为 应用程序框架
从我的回答来看,我可能更熟悉FM(实际上,参数化工厂方法,但我觉得这是最常用的FM)