美文网首页
工厂方法模式(Factory Method Pattern)

工厂方法模式(Factory Method Pattern)

作者: Gabriella0629 | 来源:发表于2017-09-12 18:39 被阅读0次

首页:设计模式
上篇: 简单工厂

模式动机

生产一个特殊的女朋友礼物和衣服 ,分别需要一个抽象模版和一个知名的 工厂生产,比简单工厂更加简洁

模式定义

工厂方法模式(Factory Method Pattern)又称为工厂模式,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

模式结构

  • Product:抽象产品
  • ConcreteProduct:具体产品
  • Factory:抽象工厂
  • ConcreteFactory:具体工厂

优点

使用工厂方法模式的另一个优点是在系统中加入新产品时,无须修改抽象工厂和抽象产品提供的接口,无须修改客户端,也无须修改其他的具体工厂和具体产品,而只要添加一个具体工厂和具体产品就可以了。这样,系统的可扩展性也就变得非常好,完全符合“开闭原则”。

缺点

在添加新产品时,需要编写新的具体产品类,而且还要提供与之对应的具体工厂类,系统中类的个数将成对增加,在一定程度上增加了系统的复杂度,有更多的类需要编译和运行,会给系统带来一些额外的开销。

适用环境

客户端在使用时可以无须关心是哪一个工厂子类创建产品子类,需要时再动态指定,可将具体工厂类的类名存储在配置文件或数据库中。

模式扩展

1、使用多个工厂方法:在抽象工厂角色中可以定义多个工厂方法,从而使具体工厂角色实现这些不同的工厂方法,这些方法可以包含不同的业务逻辑,以满足对不同的产品对象的需求。
2、产品对象的重复使用:工厂对象将已经创建过的产品保存到一个集合(如数组、List等)中,然后根据客户对产品的请求,对集合进行查询。如果有满足要求的产品对象,就直接将该产品返回客户端;如果集合中没有这样的产品对象,那么就创建一个新的满足要求的产品对象,然后将这个对象在增加到集合中。

下篇:抽象工厂模式

感谢:
https://design-patterns.readthedocs.io/zh_CN/latest/behavioral_patterns/behavioral.html

http://www.runoob.com/design-pattern/design-pattern-intro.html

相关文章

网友评论

      本文标题:工厂方法模式(Factory Method Pattern)

      本文链接:https://www.haomeiwen.com/subject/bwocsxtx.html