挑灯夜读——java设计模式:工厂模式

工厂模式的来由

  • 任何事物,都有其存在即合理的论证。我们也能从这个角度想到,我们的工厂模式能够成为重中之重的设计模式,一定有其存在的意义。

这里让我们来回顾简单模式的基本思路
饿汉模式:在创建对象时便实例化对象,就像一个饿汉,迫不及待的想要实例化对象,这样的坏处可想而知,因为实例化对象需要占用相当大的内存,而这些内存不一定会被使用。
懒汉模式:我们创建对象时,不急着实例化对象,而是使用一个方法来实例化对象,我们只需要调用该方法便可实例化对象,只是在多线程中会出现创建对象的不一致性。这里我们需要添加一些双重判定机制和volatile等关键字来确保一致性。

  • 这里我们可以想象到,我们虽然在懒汉模式中,将创建对象交给了方法处理,但是倘若我们需要创建新的对象,就需要增加我们的方法等方式来达到目的,但是这种方式很麻烦,不如直接将我们的方法抽离成一个工厂。这种模式,相当于,我们需要买一部手机,不需要自己做一部手机,而是可以向工厂直接买一部手机,这个工厂直接来创造手机。

普通工厂模式

  • 普通工厂模式的话,我们使用代码来学习这个模式:
«interface» 汽车接口 宝马 奔驰 生产工厂 消费者 implements implements 实现 实现
  • 上面是我们的普通模式工厂的一个类图,如上所示:

我们会创建一个汽车接口,并使用两个类来实现我们的接口,然后用一个工厂来实例化类,然后我们消费者只需要调用工厂类,并将我们需要创建的参数传入后,得到我们的实例化类。

  • 普通工厂模式有缺点吗?
  • 肯定会有缺点,这样的缺点来自于我们创建另一个汽车类,如奥迪时,我们需要增加汽车类继承汽车接口,并且通过生产工厂来实例化,所以我们还需要修改工厂类。

工厂模式

  • 它是一个比普通工厂模式多了一些改进的模式,直接上类的关系图
«interface» 汽车接口 宝马 奔驰 宝马工厂 奔驰工厂 工厂 消费者 implements implements 实现 实现 实现 实现
  • 可以看到,我们的工厂模式,将奔驰工厂和宝马工厂抽离出来,这样就可以在避免我们修改很多的类,这样只需要继续创建类即可。

抽象工厂模式

  • 抽象工厂模式就比较复杂了,所以需要清晰的图来解读如下:
«interface» 电脑 小米电脑 华为电脑 «interface» 手机 小米手机 华为手机 华为产品 小米产品 «interface» 产品工厂 implements implements implements implements 属于 属于 属于 属于 implements implements
  • 以上就是我们的抽象工厂模式,就是把我们的工厂抽离出来,这里使用了三个抽象类,分别是电脑、手机和产品工厂类,然后通过继承这三类,实现一个抽象的抽象类,从而实现抽象工厂的设计模式。

结语

  • 本次的工厂模式学习起来不是很难,希望能够继续学习下去,我们不辜负光阴就行,一切都是最好的安排。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

米店不卖你

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

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

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

打赏作者

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

抵扣说明:

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

余额充值