简单工厂模式、工厂模式、抽象工厂模式

设计模式是遵循设计原则来的,所以理解设计模式之前请先理解设计原则,这样才更好的理解设计模式。

设计模式目的:都是为降低耦合,方便扩展

三种模式关键理解的地方在有多少角色组成

简单工厂模式:

它由三种角色组成:
- 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不同,产生具体的工厂产品。如例子中的Driver类
- 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。由接口或者抽象类来实现。如例中的Car接口。
- 具体产品角色:工厂类所创建的对象就是此角色的实例。由一个具体类实现,如例子中的Benz、Bmw类

整体上理解为,我们首先创建抽象Car接口,然后具体实现有Benz、Bmw类,然后再由我们的工厂类Driver来具体使用Benz(奔驰)、Bmw(宝马)类。

简单工厂模式的缺点:

工厂类不太理想,因为每增加一辆车,都要在工厂类中增加相应的商业逻辑和判 断逻辑,这显自然是违背开闭原则的,因此要用工厂模式来优化

工厂方法模式:
  • 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。它由抽象Driver类或者接口来实现。
  • 具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。它由具体的BenzDriver(奔驰司机)、BmwDriver(宝马司机)类来实现。
  • 抽象产品角色:它是具体产品继承的父类或者是实现的接口。一般由抽象类或者Car接口。
  • 具体产品角色:具体工厂角色所创建的对象就是此角色的实例。由具体的Benz(奔驰)、Bmw(宝马)类来实现。

整体上理解为,我们首先创建抽象Car接口,然后具体实现有Benz、Bmw类,然后我们在创建抽象工厂类Drive,BenzDriver(奔驰司机)、BmwDriver(宝马司机)类来实现抽象工厂,具体工厂里面再具体调用那种车。

优点:
其实这样已经能解决、应付我们可能遇到的大部分业务需求

抽象工厂模式

出现的原因:
但是当产品种类非常多时,就会出现大量的与之对应的工厂类,这就很糟糕,这就是它出现的原因。

先来看下什么是产品树和产品族?

产品树类比如:奔驰车、宝马车,这两种车都是最顶层的。

产品族类比如:商务奔驰车和商务宝马车,这两个就组成产品族。都是商务类型,但是由不同一个顶点出发,我们就称之为他们为族。

抽象工厂模式的各个角色(和工厂方法的如出一辙):
- 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。它由抽象类或者接口来实现。
- 具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。它由具体类来实现。
- 抽象产品角色:它是具体产品继承的父类或者是实现的接口。一般由抽象类或者Car接口。
- 具体产品角色:具体工厂角色所创建的对象就是此角色的实例。由具体的Benz(奔驰)、Bmw(宝马)类来实现。

其他代码类参考:
https://www.cnblogs.com/zhangchenliang/p/3700820.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值