工厂模式java_Java学习之——简单工厂模式

ad20ef70fbff27a04a897f6fc8d9b64e.png

工厂模式分为三类:

1、简单工厂模式

2、工厂方法模式

3、抽象工厂模式

那么问题来了,什么是工厂模式?what‘s this???

专业的定义:实现了创建者和调用者的分离。

核心本质:

-----------实例化对象,用工厂方法代替new操作。

Oh,My God,我即使背下来我也不理解,有个鸟用呀,学习一定要理解思想,又不是文科背诵对吧?


好了,说了这么多,关死记硬背肯定是不行的,我们这里先学习简单工厂模式,后面的两个明天后天再学

首先,我想开车,我想开车,我想开车,怎么办呢?用Java代码实现如下:

1、定义一个车的接口

76225dbba48596324f08f6899160b86a.png

2、定义2个实现车接口的类,这里是奥迪车和比亚迪车

78949768f7ac43c0b3a75f7a36d29c81.png

1986157d3ae579f95bfcd5e20e837cee.png

3、好了,现在有车的图纸了,我要开车了。。。

9dda361a7fd98d8f3bd319ea6f229edc.png

这样我就能开车了,但是,有没有发现一个问题,就是我要开车,为什么非得要我去创建车呢?虽然我能创造车(假设),但是太浪费时间了有没有,而且每次都得去创建我想开的那种车,有没有办法能解决我不用创建车就能开车了呢?

答:简单工厂模式

我们只需要创建一个工厂类,

ff9663bc82e157207773aca231528a1c.png

这样,我们想开车的时候,就不用自己造了(new),而是直接去工厂取就行了。。。

4f2b21a836155c3f6cc2257cd9b3e72e.png

是不是很简单就实现了,这样我们需要什么车的时候,就去创建一个那个车的类去实现Car接口,在工厂类中添加对应的代码,但是它违反了设计模式的

– OCP(开闭原则,Open-Closed Principle):一个软件的实体应当对扩展开 放,对修改关闭。

不过对于我们来说无所谓,我们不是写JDK,这样的小瑕丝是可以容忍的

下面放上两张UMR图:

不使用简单工厂模式:

949a1d233a531d8c0561db3e9823f0d1.png

这里的Clinent01也就是我们的TestDriver类,名字不同而已,可以发现,这个类需要去和每个类都去打交道。

使用简单工厂模式:

3dfeb1fde3f868b803bf008a6e8e036c.png

Client是我们的TestDriver类,可以看出,只需要和工厂和Car打交道就行了。。。。

总结:不管学习涉及模式,还是学习数据结构算法,还是其他,思想很重要,理解了前人的智慧结晶很重要,敲上代码10遍也不理解,那是打字员了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值