美文网首页
工厂模式精髓

工厂模式精髓

作者: 理想是一盏灯 | 来源:发表于2018-07-14 08:24 被阅读13次

工厂模式分类

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


三种工厂模式的共同点

  所有这三种工厂模式都是对象的创建型模式,都对所有用到该对象的创建,也就是实例化进行统一管理,这些对象往往是相关对象或者对象的创建比较复杂,根据需求不同而不同,这样的好处可以避免当业务变得复杂时,比如新增了一个同类型的其他产品时,所有创建该类型产品类对象的地方都要改一遍(比如在原来的判断分支上新增一个对于新加入对象的类型识别判断,并赋值),另外的好处是屏蔽客户端创建对象的复杂性。这些都可以在工厂中进行处理,对用户透明,只返回符合要求的对象给客户端。


简单工厂模式特点

  对于不同产品对象的创建,只有一个工厂,根据产品类型的不同来创建不同的产品对象。产品类型客户端传入,类型可以是唯一标识每个产品的值

优点

  类少,逻辑比较简单

缺点

  每增加一个产品对象都需要修改原有代码,必须添加一个判断新对象类型的分支,来创建新对象。不符合开闭原则。


工厂模式特点

  有多个工厂,都继承至一个抽象工厂,这个抽象工厂包含有一个创建产品(所有产品的抽象类)对象的抽象方法。不同的产品由不同的产品工厂创建,每个产品工厂实现抽象工厂的创建方法,创建该产品工厂对应的产品。将具体产品的创建延迟到子类工厂的实例化后。

优点

  新增产品对着,只需要新增一个产品类,实现抽血产品接口,新增一个产品工厂,实现抽象工厂并实现创建产品的方法即可,不需要修改原有代码

缺点

  类数量增加,逻辑更抽象


抽象工厂特点

  跟工厂模式一样,区别就是每个工厂类中增加了一个方法,用于创建产品族的相似类型产品或者依赖产品,这种类型产品和之前的类型产品归属于一个产品族,比如面和荷包蛋,面具体有水煮面,凉面,它们属于面这种类型产品,荷包蛋具体有水煮荷包蛋,煎蛋,它们属于荷包蛋这种类型产品,但是面和荷包蛋都归属于产品族,它们属于一个族--食物,抽象工厂可以创建不同产品族的产品。个人认为抽象工厂模式应该叫做家族模式更贴切

优点

与工厂模式一样,不过多了产品族的特性,工厂模式只能创建一种类型的产品,而抽象工厂可以创建多种相似类型的产品,其中这些相似类型的产品属于一个产品族

缺点

  跟工厂模式一样,甚至新增产品族的其他类型产品,还得在工厂中新增一个创建方法

相关文章

  • 工厂模式精髓

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

  • 常用设计模式

    设计模式 工厂模式 工厂模式思路上分:简单工厂模式,工厂模式, 抽象工厂模式// 抽象工厂模式可以代替工厂模式,做...

  • 工厂模式

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

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

    找女朋友之简单工厂模式,工厂模式,抽象工厂模式 找女朋友之简单工厂模式,工厂模式,抽象工厂模式

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

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

  • 工厂模式

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

  • Java设计模式——工厂模式

    工厂模式简单工厂模式工厂方法模式抽象工厂模式 1.简单工厂模式 1.基本介绍1)简单工厂模式也叫静态工厂模式,是属...

  • 设计模式-3种工厂模式

    工厂模式包括:简单工厂模式,工厂方法模式,抽象工厂模式 简单工厂模式 工厂方法根据参数直接创建实例:工厂->产品 ...

  • 设计模式-工厂模式

    工厂模式概念 实例化对象,用工厂方法代替new操作。工厂模式包括工厂方法模式和抽象工厂模式。抽象工厂模式是工厂模式...

网友评论

      本文标题:工厂模式精髓

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