工厂三姐妹——创建型设计模式之二

一、简单工厂

简单工厂是面向对象编程的起步设计模式,用到面向对象设计的三大特性:封装,继承,多态来进行设计是必须的。

封装:使业务逻辑和界面逻辑分离,做到代码复用,而不是复制。

继承:将在同一类中进行的逻辑操作,抽象出一个类或者接口,统一定义,通过子类进行不同的实现。这样对象之间的修改就变得独立,不会影响到其他类,降低了对象间的耦合。

多态:通过给同类Things定义接口或抽象类,由子类继承实现统一父类方法,但不同的子类又有不同实现,将继承和多态演绎完成。

 

1、简单工厂解决的问题

原来这些业务都在同一个类中,我们通过传入参数,来判断具体调用哪个函数,现在我们把这些类都一个个独立封装起来,问题出现了,

我们应该怎样从客户端调用具体要实现的业务逻辑类呢???

 

这时候该简单工厂上场了。在工厂中根据客户端传入参数来决定要实例化的对象。

 

定义一个工厂类,负责创建实例过程。通过这个工厂,我们将客户端和业务逻辑类进行联系。

当然作为联系者,当然定义中就要需要知道所有的业务逻辑类,所以在类图中,你会发现是工厂类依赖逻辑类哦!

2、类图

 

 

二、工厂模式

1、工厂模式

工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。

 

2、工厂模式的出现

简单工厂模式通过一个工厂类实现了客户端对具体调用类的实例化。那么大家都知道简单工厂中的工厂类是通过客户端传入参数,由条件语句进行判断后决定实例化哪个类的。那是不是您也有这样的疑问呢?面向对象技术要做到尽可能的封装性好,一个类修改,增删,不影响到其他类。那在简单工厂模式中,工厂类中要修改或增加一个操作,都必须打开这个工厂类,那么工厂类中的所有运算我就可以一览无遗了,是不是这里就封装不严了呢?

工厂类封装不严怎么办?

 

还是由简单模式的二姐(还有大姐哦),工厂模式来给她完善吧!

 

工厂模式将面向对象理解的很到位,既然封装不严,那么我们就给抽象工厂也分出一个层次了来,抽象出一个接口,然后把这些分支判断语句转换成一个个小的子类来实现工厂接口。是不是跟业务逻辑的封装是如出一辙呢?

 

这样我们就把原来需要再工厂类中要判断的条件语句转移到客户端,虽然还得判断需要实例化哪个,但是这些都是跟界面打交道的代码,我们都放在客户端中处理,不会影响到内层业务,且以后要增加运算,我们只需增加运算类,对应的指向运算类的工厂,不会干扰到其他类,这样的业务结构是牢固的,我们所期待的。

 

3、类图

 

三、抽象工厂

详情请见上篇博客:抽象工厂

 

作者信息

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值