Java设计模式——抽象工厂模式

抽象工厂模式

定义

提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

结构

AbstractFactory(抽象工厂):它声明了一种用于创建一族产品的方法,每一个方法对应一种产品。

ConcreteFactory(具体工厂):实现了在抽象过程中声明的创建产品的方法,生成一组具体产品,这些产品构成一个产品组。

AbstractProduct(抽象产品):它为每种产品声明提供接口,在抽象产品中声明了产品所具有的业务方法。

ConcreteProduct(具体产品):它定义具体工厂生产的具体产品对象,实现抽象产品接口中声明的方法。

类图

抽象工厂模式类图

实现过程

创建一个抽象工厂类,里面定义一些方法(创建一族产品)。创建一些具体工厂类去继承并实现其中的方法。然后创建几个抽象产品类(有几个产品族就有几个)。再创建一些具体产品类去继承它。然后具体工厂类一次创建一族产品(可能有多个)。其实就是工厂方法的工厂类进行了升级,原本只能创建一个产品,现在能创建一族产品。

优点

  1. 隔离了具体类的生成,更换具体工厂类变得相对容易。
  2. 一个产品组的多个对象被设计成一起工作时,它的保证客户端始终是使用同一个产品组成的对象。
  3. 增加新的产品族很方便,符合开闭原则。

缺点

增加新的产品等级结构很麻烦,要修改源代码,违背开闭原则。

适用环境

  1. 一个系统不应当依赖于产品类实例如何创建、组合和表达的细节。
  2. 系统中有多个产品族,而且每次只使用其中某一个产品族。
  3. 属于同一产品族的产品将一起使用,这一约束必须在系统的设计中体现出来。
  4. 产品等级结构稳定。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值