设计模式-工厂模式

设计模式-工厂模式

spring中的BeanFactory就是工厂模式

一、简单工厂模式

简单工厂模式是指一个工厂对象决定创建出哪一种产品类的实例。实现一个类,类里面有一个方法,更加传入的参数,创建对象。客户端只需要传入工厂类参数,对如何创建类不关心。

下图就是一个简单工厂的实例
在这里插入图片描述

在这里插入图片描述

Calendar.getInstance就是一个简单工厂模式

缺点:工厂类的职责相对过重,不易于扩展过于复杂的产品结构。

二、工厂方法模式

工厂方法模式是指定义一个创建对象的接口,但让实现这个接口的类觉定实例化哪个类,工厂方法让类的实例化放到子类中进行。在工厂方法模式中用户只需要关系所需产品对应的工厂,无需关注创建细节,而且加入的新的产品符合开闭原则。

简单类图
在这里插入图片描述

logback中工厂方法模式的应用

在这里插入图片描述

适用场景:一个类通过其子类来指定创建哪个对象。
缺点:
1.类的个数容易过多,增加复杂度
2.增加了系统的抽象性和理解难度

三、抽象工厂模式

抽象工厂模式是指提供一个创建一系列相关或相互依赖对象的接口,无须指定他们的具体的类。强调的是一系列相关的产品对象(同一产品族)。
在这里插入图片描述

举例:如果一个有n个品牌,任何一个品牌都可以生产a,b,c,d多个类型的产品。这个时候我们可以这样定义实体,a,b,c,d类型都定义一个接口或者超级类,然后每一个品牌对应实现a,b,c,d类型的类。这个时候就可以使用抽象工厂模式了,定义一个抽象工厂类接口,可以生产a,b,c,d类型的产品,这个接口和品牌无关,然后每一个品牌都定义一个工厂实现这个抽象工厂类接口,生产对应产品的a,b,c,d类型对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值