java设计模式之简单工厂模式

定义:
由一个工厂对象决定创建出哪一种产品类的实例
类型:属于创建型,但不属于GOF23中设计模式

工厂模式分为三种:
1、简单工厂模式(静态工厂方法模式)
2、工厂方法模式(多态性工厂模式)
3、抽象工厂模式(工具箱模式)

适用场景:
工厂类负责创建的对象比较少。
客户端(应用层)只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心。

优点:
只需要传入一个正确的参数,就可以获取你所需要的对象,而无需知道其创建细节。

缺点:
工厂类的职责相对过重,增加新的产品,需要修改工厂类的判断逻辑,违背开闭原则。

Coding:
场景:例如课程网上有java的视频,有Python的视频,前端的视频
首先创建一个video视频抽象类

创建java的视频实现类JavaVideo类:
在这里插入图片描述
创建Python的视频实现类PythonVideo类:
在这里插入图片描述
创建一个Test测试类(应用层也就是客户端):

创建工厂类VideoFactory
在这里插入图片描述
修改Test类中如下
在这里插入图片描述

类图如下:
在这里插入图片描述
Test只依赖VideoFactory这个类,具体的生产过程都在VideoFactory这个类中,Test只管使用。
这就是简单工厂
接下来看一看简单工厂有什么缺点,比如我们现在要加一个算法的课程,那我们就需要修改VideoFactory这个类,随着课程不断的增加我们就需要不断地去修改工厂类,修改就会带来风险,所以简单工厂并不符合开闭原则,不易扩展。
我们可以通过反射来弥补简单工厂的不易扩展性。
首先修改VideoFactory类
在这里插入图片描述
修改Test类如下
在这里插入图片描述
这就解决了简单工厂的不易扩展性,即使有新的课程,只需要创建新的课程类就可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值