美文网首页
设计模式--创建型模式

设计模式--创建型模式

作者: 浮zai梦里 | 来源:发表于2019-03-23 20:58 被阅读0次

简单工厂模式

概念: 工厂类对你传入的参数判断(可以写在配置文件中),动态决定new 一个什么对象给你。(类似switch)。

缺点: 如果要新增一个对象,需要在工厂类里面修改(类似增加一个switch 分支)违反了开闭原则。

那么如何遵守开闭原则呢。请看工厂模式

工厂方法模式

概念: 对每一个类我都生成一个工厂类,那么新增类的时候,我只需要创建一个对应的工厂类就可以了,不需要修改原代码。(:三星工厂生产三星手机,苹果工厂生产苹果手机)

优点:符合开闭原则,同时在工厂类中也可以做方法重载。

缺点:类的膨胀,每一种类都需要定制一个工厂类

抽象工厂模式

概念:在抽象工厂中提供了不至一个类的工厂方法,而是提供了某一个产品族的工厂方法。想当于苹果工厂可以生产iphone,mac,iwatch,只需要一个工厂类就可以了。

优点:
1.新增产品族很容易:比如我现在需要小米的全家桶,那好办,我只需要增加一个小米工厂,里面有生产各个小米产品的方法。

  1. 当一个产品族的对象被设计成一起工作时,能保证客户端使用的是同一个产品族。比如:你喜欢绿色的手机主题,那么该工厂生产的按钮,背景,锁屏都是和绿色相关的,而不会出现其他颜色。再比如,你想开个苹果专卖店,那么该工厂给你生产的都是苹果的产品。

缺点:
1.新增产品线难,比如苹果的产品里现在多了一个苹果汽车,那你就需要修改苹果工厂了,需要为其增加一个生产汽车的方法。不符合开闭原则。

建造者模式

类的种类:
  1. director (负责指挥产品的构建顺序)
  2. builder (抽象建造者)
  3. buliderImpl (具体建造者)
  4. product (产品类)
适用场景:
  1. 产品类的构建场景比较繁琐(多个成员变量赋值)
  2. 一个产品类可以分为多个种类

比如说,电脑(产品类)包括cpu,内存,磁盘,显示器等,不同品牌的电脑配置都不一样,都是基本属性都是这些。那么对不同的电脑的建造可以生成多个建造器(由于建造属性一样,所以继承抽象建造者)。

苹果电脑建造器:

  1. 建造屏幕:给你弄个retina视网膜显示器
  2. 建造磁盘:给你个256g 的固体硬盘(太贵了。。)
    。。。

联想电脑建造器:

  1. 建造屏幕:给你弄个垃圾点的屏幕
  2. 建造磁盘:给你个弄个1T的磁盘
    。。。

说白了。建造器的指责就是为产品赋值,可能复杂点的情况需要考虑顺序。

director的职责

建造器只是声明了产品的每个组件怎么造,具体开工还需要director指挥,比如先造那个。其实director的职责完全可以放在建造器中。

优点:

1.客户端不用关系产品的复杂创建过程

  1. 新增产品的种类时也符合开闭原则
缺点
  1. 适用于同一个产品的不同类别,如果产品的组成成分不相同就不适用了。
  2. 如果该产品的种类很多,那么每个种类都需要一个建造器,导致类的膨胀。

相关文章

  • 23种设计模式总结一

    23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型。 一、创建型设计模式 创建型设计模式包括:单...

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

  • 创建型设计模式总结

    创建型设计模式总结 Intro 前面几篇文章已经把创建型设计模式都介绍了,来做一个简单的总结。 创建型设计模式,就...

  • 单例模式

    单例 单例模式,是一种设计模式,属于创建型设计模式,还有一种创建型设计模式,工厂模式。设计模式总共有23种,三大类...

  • 设计模式简单总结(待完善)

    设计模式简单总结 设计模式可以分为:创建型,结构型,行为型三种模式。 1 创建型模式 1.1 单例模式 用来指定某...

  • 设计模式归纳

    一、设计模式的分类 23 种经典的设计模式分为三类:创建型、结构型、行为型。 1.创建型设计模式主要解决“对象的创...

  • 《设计模式之美》- 23种设计模式

    学习《设计模式之美》笔记。 23 种经典设计模式共分为 3 种类型,分别是创建型、结构型和行为型 创建型模式 创建...

  • 设计模式

    设计模式主要分为三大类型:创建型模式,结构型模式和行为型模式 创建型设计模式是一类处理对象创建的设计模式,通过某种...

  • 设计模式分类

    创建型设计模式 Abstract Factory模式 Builder模式 Factory Method模式[htt...

  • 设计模式分类

    经典23种设计模式: 创建型设计模式: Singleton Pattern(单例模式) PrototypePatt...

网友评论

      本文标题:设计模式--创建型模式

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