设计模式四 —— 工厂模式

工厂模式

概述

一般情况下,工厂模式分为三种:简单工厂,工厂方法和抽象工厂

不过,在GoF的《设计模式》书中,将简单工厂视为工厂方法的一种特例,因此工厂模式又被分为工厂方法和抽象工厂。

简单工厂模式 (静态工厂方法模式)

概念

简单工厂模式 是 创建型的一种。

在简单工厂模式中,可以根据实际的参数不同返回不同的实例。同时在简单工厂模式中,会定义一个类负责创建其他类的实例,被创建的实例也通常具有共同的父类。

虽然实现了对象的创建和使用的分离,但是不够灵活,工厂类集合了所有产品的创建逻辑,职责过重,同时新增一个产品就需要在原工厂类内部添加一个分支,违反了开闭原则并且若是有多个判断条件共同决定创建对象,则后期修改会越来越复杂。

实际应用

JDK中的DataFormate、Calendar类都有使用,通过不同参数来返回我们需要的对象。

工厂方法模式

概念

工厂方法模式中,将简单工厂中的工厂类变成一个抽象接口。负责给出不同工厂应该实现的方法,自身不再负责创建各种产品,而是将具体的创建操作交给实现该接口的子工厂类来做。

通过多态的形式解决了简单工厂模式过多的分支问题。虽然在新增产品时不仅要更新一个产品类还要实现与之对应的子工厂,但是相较于简单工厂模式更符合开闭原则

实际应用

JDK中的Collection接口中Iterator的实现。Collection中不同的实现类生产适合于自己的迭代器对象。

抽象工厂模式

在这里插入图片描述

概念

工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但是由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。抽象工厂模式为工厂方法模式的进一步延伸,将其中一些相关的产品组成一个“产品族”,由同一个工厂来进行统一生产。虽然对于新增一个产品族很方便,而且也符合开闭原则,但是新增一个产品等级结构,会对整个工厂结构进行大改

应用

Spring中的BeanFactory

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L☆★

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值