美文网首页
简单工厂,工厂模式,抽象工厂三种模式的理解

简单工厂,工厂模式,抽象工厂三种模式的理解

作者: 雨天多久就 | 来源:发表于2019-11-21 09:31 被阅读0次

工厂模式是什么?做什么用的?

个人的理解:工厂模式定义了一个接口,对某些具有相似功能或者行为的类或者子类的实例化进行了封装。

三种工厂模式

简单工厂模式

如下图:

简单工厂模式.png
总结:Factory把类A,B,C的实例化封装在自己内部,外部使用的时候,只需要传达指令,然后接收工厂返回的实例对象。
优点:将类的实例化封装起来,使得对象实现实例化和使用分离开来,调用者不需要关注过多的实例化细节。
缺点:扩展方面不灵活,增删改对象的实例化都需要修改工厂类,并且容易造成工厂类的代码臃肿
工厂模式

如下图:

image.png
总结:Factory作为一个父类存在,具体各个类的实例方法封装在对应的子类工厂中。外部使用的时候,给对应的子类工厂发送指令
优点:工厂模式其实是对简单工厂模式的扩展,保留了简单工厂的优点,同时避免了工厂类过于庞大以及业务逻辑臃肿
不足的地方:使用的时候,需要用专门对应的类去实例化对象,且一个子类工厂只能生成一种对应的产品。
新增产品的时候,需要专门添加新的产品类
抽象工厂

如下图:

image.png
总结:Factory作为一个接口存在,具体各个类的实例化交给内部对应的类去做。外部使用的时候,发送指令给Factory
(从使用上看,简单工厂和抽象工厂的表现形式是一样的。)
优点: 保留了简单工厂调用上的便利,同时也保留了工厂模式的可扩展性
不足的地方:新增产品需要新增产品类并修改Factory内部逻辑

运用实例

抽象工厂的运用,可以看一下OC提供的系统类NSNumber

    NSNumber * num1 = [NSNumber numberWithInt:3]; // 生成对应的 __NSCFNumber实例
    NSNumber * num2 = [NSNumber numberWithBool:NO]; // 生成对应的 __NSCFBoolean实例

给工厂类NSNumber发送numberWithInt:消息,NSNumber内部会使用工厂__NSCFNumber进行真正的实例化操作
给工厂类NSNumber发送numberWithBool:消息,NSNumber内部会使用工厂__NSCFBoolean进行真正的实例化操作

相关文章

  • 工厂模式

    工厂模式细分三种:简单工厂模式、工厂模式、抽象工厂模式。 工厂模式相当于抽象了简单工厂模式的工厂类,而抽象工厂模式...

  • 工厂模式理解

    工厂模式分为简单工厂、工厂模式、抽象工厂三种层级概念。简单工厂不属于23种设计模式,抽象工厂才是。 简单工厂 简单...

  • [Android]三种工厂模式总结。

    Android中,工厂模式分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。 一.简单工厂模式。 定义:简单工厂...

  • java工厂模式

    简介 工厂模式有三种:简单工厂模式,工厂方法模式,抽象工厂模式,这三种都属于工厂模式,但各有不同。 简单工厂模式 ...

  • 工厂模式

    工厂模式包含三种模式:简单工厂模式、工厂方法模式和抽象工厂模式。 简单工厂模式 定义简单工厂模式:由一个工厂类根据...

  • 【设计模式】- 工厂模式

    工厂模式分为三种:简单工厂模式、工厂方法模式和抽象工厂模式。 工厂模式:靠工厂生产对象 简单工厂模式中只有一个工厂...

  • java - 工厂模式

    工厂模式 工厂模式分为三种 简单工厂模式 工厂方法模式 抽象工厂模式 一、简单工厂模式定义一个工厂,根据参数的不同...

  • 工厂模式精髓

    工厂模式分类 业界一般把工厂模式细分为三种:由简单到复杂分别为简单工厂模式、工厂模式、抽象工厂模式。 三种工厂模式...

  • Java 设计模式

    Factory Design 工厂模式有三种:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂:由一个工厂类根据...

  • 简单工厂模式,工厂方法模式,抽象工厂模式梳理

    用简单的图来理解三种工厂模式,来加深对此的理解: 简单方法模式: 工厂方法模式: 抽象工厂模式: 此文仅为自己学习...

网友评论

      本文标题:简单工厂,工厂模式,抽象工厂三种模式的理解

      本文链接:https://www.haomeiwen.com/subject/uiagictx.html