设计模式2——工厂模式(创建型模式)

今天折腾第二种设计模式:工厂模式

和单例模式一样,工厂模式也是一种创建型模式

通俗一点的话来讲,工厂模式的出现是为了让开发人员使用统一的接口函数(工厂类)实现相关类的实例化,这些待实例化的类有彼此类似的结构或者功能,这样开发人员就不用挨个去执行 new 操作,将具体的实例化 new 操作交给封装好的工厂类。

 

《大话设计模式》一书中介绍了三种工厂模式,分别是:简单工厂模式,工厂模式,抽象工厂模式。

其中简单工厂模式工厂模式继承和实现关系相对简单,且结构上相似度较高。

直接上图:

 

 

设计模式2——工厂模式(创建型模式)

                                                                                图一  简单工厂模式结构图


 

设计模式2——工厂模式(创建型模式)​                                                                                       图二  工厂模式结构图

 

简单工厂模式一般使用一个工厂类,实现对所有产品类的生产,该模式中工厂类(Creator 类)的建造方法中一般使用 switch 语言,根据传入的参数不同,new 出不同的产品类。

从继承结构上来说,简单工厂模式更简洁;但是,简单工厂模式违背了“开放-封闭原则”(即:对扩展开放,对修改封闭),当新增一个产品类的时候,要修改工厂类中 switch 语句的相关逻辑;工厂模式克服了这个问题,与简单工厂模式不同,工厂模式针对不同的产品类,使用不同的工厂类,所有工厂类都继承同一个建造类接口,其建造类方法返回值的类型是所有产品类的同一父接口类型;当需要新增一个产品类时,不需要对现有类进行修改,直接新建一个对应的工厂类,实现了“只扩展,不修改”。