Java小白成长之路-工厂模式

工厂模式

在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。比如说, 许多类型对象的创造需要一系列的步骤: 你可能需要获取对象的初始设置; 选择生成哪个子对象实例; 或在new对象之前必须先new其他对象。
我们围绕创建汽车的制造来讨论:
1.最开始没有工厂模式的时候,用户想要一辆奔驰车,需要用户自己new一个奔驰车,然后使用。
奔驰类
测试类
而我们想让实际用户在创建对象实例的时候不需要知道构建对象所需要的细节。因此我们就引入了工厂模式。
工厂模式主要分为简单工厂模式,工厂方法模式,抽象工厂模式。

简单工厂模式

组成:

  1. 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,用来创建产品
  2. 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。
  3. 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。

如果用户知道如何创建车,那么车与用户之间的耦合性就比较大,为了降低他们之间的耦合性,我们首先使用简单工厂模式。创建一个工厂类,工厂类里有创建汽车的细节,而用户不需要关心汽车是如何创建的,只需要通过工厂去使用。
抽象产品-汽车类
具体产品-奔驰类
具体产品-宝马类工厂类
测试类
从开闭原则来看,如果有新型车可以让工厂进行创建时,只需要在工厂类里添加创建新型车的方法就好。用户就可以通过工厂得到新型车的对象。这么看来简单工厂模式是符合开闭原则的。但是对于工厂类来说,每次新加一个新型车,就需要在工厂类里添加一个属于创建该新型车的逻辑代码,这么看来又违背了开闭原则。
这个时候工厂方法模式出现了。

工厂方法模式

组成:

  1. 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。
  2. 具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。
  3. 抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类或者接口来实现。
  4. 具体产品角色:具体工厂角色所创建的对象就是此角色的实例。在java中由具体的类来实现。

工厂方法模式就是将工厂类定义成接口,每新增一款新型车就增加一个这款车对应工厂类的实现。这样就可以在不修改代码的前提下进行扩展新功能。
抽象工厂
具体工厂-奔驰
具体工厂-宝马
抽象产品-汽车类
具体产品-奔驰类
具体产品-宝马类
测试类

抽象工厂模式

抽象工厂模式提供一个创建一系列或相互依赖对象的接口,而无须指定他们具体的类。
如果工厂扩展业务了,不仅生产汽车,还生产轮胎了,这时候引出抽象工厂模式.

轮胎接口-抽象产品
奔驰轮胎-具体产品
宝马轮胎-具体产品

抽象工厂

奔驰工厂类-具体工厂
宝马工厂类-具体工厂
工厂创造器
测试类

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值