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

在设计模式的学习中,工厂方法模式和抽象工厂模式常常让人困惑。工厂方法模式定义用户创建对象的接口,由子类决定实例化哪个类,而抽象工厂模式则提供创建一系列相关对象的接口,无需指定具体类。工厂方法模式的核心工厂类只负责接口,新产品引入不修改原有工厂,结构为一对一平行;抽象工厂模式可生产多个抽象或实体产品,结构为一对多。这两种模式各有其适用场景。

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

            在进行重新学习设计模式的时候,感觉两种设计模式有很多地方很相似,但一时也不好区别。很头疼。通过以前的学习,对两个模式的区别进行了汇总,保证是最全的区别:

  1 定义:

         工厂方法模式:定义用户创建对象的接口,让子类决定实例化那一个类。

         抽象工厂模式:提供一个创建 一系列相关或相互依赖对象的接口,而无需制定他们的具体的类。

 2 职能分析:

        工厂方法模式:核心工厂类不负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不参与实例化细节。

                                    工厂方法模式可以在不修改工厂角色的情况下引进新产品,该模式中,工厂类与产品类是一一对应,并且是平行等级的结构。

        抽象工厂模式:1. 用抽象工厂生产抽象产品

                                   2.用实体工厂生产实体产品

                                   3 .用抽象产品提供实体产品访问接口

                                   4.用实体产品实现自己的功能

 3结构模型图

         



  4 总结一下:

              工厂设计模式: 1.一个抽象产品类,可以派生出多个具体产品类

                                           2.一个抽象工厂类,可以派生出多个具体工厂类

                                           3.每个具体工厂类,只能创建一个具体产品的实例

             抽象设计模式:1.多个抽象产品类,可以派生出多个具体产品类

                                         2.一个抽象工厂类,可以派生出多个具体工厂类

                                         3.每个具体工厂类,可以创建多个具体类的实例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值