设计模式之 工厂模式三姐妹

简单工厂模式:

当需要一个相同的接口,但里面完成内容不同时,就可以用一个工厂来产生其中的多个类的一个实例。 通俗说 :

用来生产同一等级结构中的任意产品(不支持增加新产品)

 

 在于简单工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。

缺点:当需要增加新产品时,需要修改工厂类,不符合开放封闭原则。

 =====================================================

工厂方法模式:

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

用来生产同一等级结构中的固定产品(支持增加任意产品)

步骤:

1 一个工厂创建一个产品,所有的具体工厂继承自一个抽象工厂。

2 客户端先创建不同产品工厂,再由工厂创建具体产品,

3 产品的创建逻辑分散在每个具体工厂中。客户端只依赖于抽象工厂与抽象产品,不依赖于具体的工厂与具体产品增。加新产品是需要增加工厂类和产品类,符合OCP原则。

 

工厂模式中,重要的是工厂类,不是产品类。产品类可以是多种形式的。

++++++++++++++++++++

工厂方法与简单工厂对比

 1  工厂方法  除将产品抽象出一个接口以便实现多态,还将不同的工厂进行细分,统一继承自一个接口,将简单工厂中的判断移至客户端。实现了开-闭原则。

2 客户端若使用一个工厂对象生产多个产品,而简单工厂需要修改每个生产函数的参数,工厂方法模式只需修改初始化语句。

 

==============================================

抽象工厂

提供一个创建一系列相关或相互依赖对象的接口,而无需制定他们具体的类

用来生产不同产品族的全部产品,易于交换产品系列。(对于增加新产品,无能为力,支持增加产品族)。

 

一个产品族是不同系列的产品组合,产品的创建的逻辑分在每个具体的工厂中。所有的具体工厂继承自同一个抽象工厂。客户端创建不同产品族的工厂,产品族的工厂创建具体的产品,但对客户端是不可见的。怎讲爱新产品族时,需要增加具体工厂类。符合OCP原则,增加新产品时,需要修改具体工厂类和增加产品类。符合OCP原则。

 =============================

小结

按照顺序,是抽象程度依次加深。简单工厂模式最易理解。当需要一个相同的接口,但里面完成内容不同的时候,就可以用一个工厂来产生其中多个类的一个实例。它最明显的是有一个工厂类来产生接口实例。

 

工厂方法模式是简单工厂的抽象加深,它不需要一个独立来创建对象。而是通过子类延迟创建需要的对象。如在汽车的对象里面包括了发动机对象,但发动机对象不是由特定的工厂类来产生,而是取决于到底是什么样的汽车,不同的汽车有不同的发动机对象,这就是交给了子类来完成。

而抽象工厂则有点类似 简单工厂模式 + 工厂方法模式。 它的好处是通过抽象类来隔离具体类,并通过唯一入口来决定产生什么具体类。我们使用它的前提条件是一系列相似的类

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值