源码分析设计模式之工厂模式(三、抽象工厂模式)

上篇文章讲到了对工厂方法模式进行变化后带来的缺陷,而为了解决工厂方法模式所带来的缺陷,从而引出了抽象工厂模式。
工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法具有唯一性。一般情况下,一个具体工厂中只有一个或者一组重载的工厂方法。但是有时候我们希望一个工厂可以提供多个产品对象,而不是单一的产品对象,如一个电器工厂,它可以生产电视机、电冰箱、空调等多种电器,而不是只生产某一种电器。为了更好地理解抽象工厂模式,先引入两个概念:
  • 产品等级:就好比一个抽象类是手机,其子类有苹果、小米、华为,而抽象类手机与具体品牌的手机之间就构成了一个产品等级结构
  • 产品簇:产品簇是指由同一个工厂生产的,位于不同产品等级结构中的一组产品,如苹果工厂生产的苹果手机、苹果电脑,苹果手机位于手机产品等级结构中,苹果电脑位于电脑产品等级结构中,苹果手机和苹果电脑就构成了一个产品簇
三、抽象工厂模式
抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂来创建其他工厂,该超级工厂又称为其他工厂的工厂。它提供了一种创建对象的最佳方式
在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象
抽象工厂模式可以理解为将简单工厂模式和工厂方法模式进行整合。从设计层面看,抽象工厂模式就是对简单工厂模式的改进(或者称为进一步的抽象)
简单理解:工厂方法模式的工厂是产品等级工厂,因为它们只创建产品等级。就好比手机工厂它只负责创建手机。而在抽象工厂模式中的工厂则是产品簇工厂,它们负责创建产品簇,就好比苹果工厂,它会创建手机、电脑等
/* ----------------------- 服务端 ----------------------- */
/**
 * 食物抽象产品
 */
interface Food {
   
    void production();
}

/**
 * 具体产品
 */
class HanBao implements Food {
   
    @Override
    public 
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值