设计模式-抽象工厂模式(创建型模式)

本文介绍了抽象工厂模式的概念及其与工厂方法模式的区别。该模式提供了一系列相关或相互依赖对象的创建接口,无需指定具体类,有利于产品系列的更换与扩展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

抽象工厂模式

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

结构图

  

优缺点

  优点:

   a.易于交换产品系列;在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。

   b.具体的创建实例过程与客户端分离,客户端通过他们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。

   c.增加新的产品系列,不会更改其他系列的源码,符合开放闭合原则。

   缺点:

   a.增加新的产品系列时,就需要增加一系列的工厂及实现,增大开发成本。

   

 工厂方法模式和抽象工厂模式的区别

 工厂方法模式是对一个具体工厂的一个输出,指向一个工厂延迟到其子类生成一个具体的实例;

 抽象工厂针对的是一系列的工厂,针对解决的是全局结构性的问题,例如数据库。

 这里还拿之前我写的工厂方法模式的实例来进行说明:

 抽象工厂模式意味这在工厂方法模式之上,又增加了一层结构,也就是将工厂方法的一个产品增加至多个产品

下图是工厂方法模式的uml图:

这里只针对老人需要生活帮助一种产品,需要哪中帮助,就直接在其对应的工厂中生成对应的一种实例。

下图为抽象工厂uml图:其中增加了医疗帮助这一产品,这样就针对于老人的生活多出了一个系列。


与工厂方法模式最显著的改变就是新增了一系列的产品-医疗服务-护士-医生-陪护-看病。

这样 在老人需要生活帮助的时候就选择生活这一系列产品,在需要医疗服务的时候就选择医疗这一系列产品。

无论选择那一项,到最后都是只能生成一种实例。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值