学习设计模式(三)--工厂模式

本文深入探讨了三种常见的工厂模式:简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式适用于封装对象创建,但违反了开闭原则;工厂方法模式则通过接口让子类决定实例化哪个产品,满足开闭原则;抽象工厂模式则处理多等级产品的创建,提供更灵活的扩展性。每种模式都有其适用场景和优缺点,例如工厂方法在增加新产品时只需添加新类,而抽象工厂则适用于多等级产品的综合工厂。
摘要由CSDN通过智能技术生成

咖啡案例:

 

1. 简单工厂模式(不属于GOF的23种设计模式):

简单工厂模式不是设计模式,反而更像是编程习惯

 抽象产品:定义了产品规范,描述了产品的主要特性和功能,比如咖啡类

 具体产品:实现或者基础抽象产品的子类,比如拿铁类

 具体工厂:提供了创建产品的方法,调用者通过该方法来创建产品

优缺点:

优点:封装了创建对象的过程,可以通过参数直接获取对象,把对象的创建和业务逻辑层分开,这样以后就避免了修改客户代码,如果实现新产品直接修改工厂类降低了客户代码修改的可能性

缺点:

增加新产品时还需要修改工厂类的代码,违背了“开闭原则”

静态工厂:

2.工厂方法模式:

定义了一个用于创建对象的接口,让子类决定实例化哪个产品类对象,工厂方法使一个产品类的实例化延迟到其工厂的子类。

 

 

 

 

 优缺点:

优点:用户只要知道具体工厂的名称就可得到所需的产品,无须知道具体产品创建过程

在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无须对原工厂进行任何修改,满足开闭原则

缺点:

    没增加一个产品就要增加一个具体产品类和对应的具体工厂类,者增加系统的复杂度

3.抽象工厂模式:

前面介绍的工厂方法模式中考虑的是一类产品的生产,如畜牧场只养动物,电视机厂只生产电视机。

        这些工厂只生产同种类产品,同种类产品称为同等级产品。也就是说:工厂方法模式只考虑生产同等级的产品,但是在现实生活中许多工厂是综合型的工厂,能生产多等级的产品。

        抽象工厂模式将考虑多等级产品的生产,将同一具体工厂所生产的位于不同等级的一组产品成为一个产品。

 

优缺点:

 

 jdk举例:

Collection.iterator

 

 工厂方法方法:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值