美文网首页原理和语言
设计模式|菜鸟教程 - C2 创造型模式

设计模式|菜鸟教程 - C2 创造型模式

作者: 左心Chris | 来源:发表于2019-07-26 15:02 被阅读0次

0 TL;DR

工厂模式 创造同一种
抽象工厂 创造同一系列
单例模式 全局类
建造者 组合创建
原型 深复制,浅复制

1 工厂模式(Factory Pattern)

在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。
使用场景:

  1. 日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。
  2. 数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。
  3. 设计一个连接服务器的框架,需要三个协议,"POP3"、"IMAP"、"HTTP",可以把这三个作为产品类,共同实现一个接口。

2 抽象工厂模式(Abstract Factory Pattern)

在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。
就是更换产品族的概念;
使用场景:

  1. QQ 换皮肤,一整套一起换。
  2. 生成不同操作系统的程序。

3 单例模式(Singleton Pattern)

主要解决:一个全局使用的类频繁地创建与销毁。
何时使用:当您想控制实例数目,节省系统资源的时候。
使用场景:

  1. 要求生产唯一序列号。
  2. WEB 中的计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来。
  3. 创建的一个对象需要消耗的资源过多,比如 I/O 与数据库的连接等。
    注意事项:getInstance() 方法中需要使用同步锁 synchronized (Singleton.class) 防止多线程同时进入造成 instance 被多次实例化。

4 建造者模式(Builder Pattern)

建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。
应用实例:

  1. 去肯德基,汉堡、可乐、薯条、炸鸡翅等是不变的,而其组合是经常变化的,生成出所谓的"套餐"。
  2. JAVA 中的 StringBuilder。
    使用场景:
  3. 需要生成的对象具有复杂的内部结构。
  4. 需要生成的对象内部属性本身相互依赖。

5 原型模式(Prototype Pattern)

这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。
使用场景: 1. 资源优化场景。

  1. 类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等。
  2. 性能和安全要求的场景。
  3. 通过 new 产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。
  4. 一个对象多个修改者的场景。
  5. 一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。
  6. 在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过 clone 的方法创建一个对象,然后由工厂方法提供给调用者。原型模式已经与 Java 融为浑然一体,大家可以随手拿来使用。

注意事项:与通过对一个类进行实例化来构造新对象不同的是,原型模式是通过拷贝一个现有对象生成新对象的。浅拷贝实现 Cloneable,重写,深拷贝是通过实现 Serializable 读取二进制流。

相关文章

  • 设计模式|菜鸟教程 - C2 创造型模式

    0 TL;DR 工厂模式 创造同一种抽象工厂 创造同一系列单例模式 全局类建造者 组合创建原型 深复制,浅复制 1...

  • 设计模式之概述

    参考资料:菜鸟教程之设计模式 设计模式概述 设计模式(Design pattern)代表了最佳的实践,通常被有经验...

  • 单例模式(Singleton Pattern)

    选自菜鸟教程 单例模式(Singleton Pattern)是Java中最简单的设计模式之一。这种类型的设计模式属...

  • 模板方法模式

    学习路线 菜鸟教程模板方法模式模板方法模式(Template Method) - 最易懂的设计模式解析 总结 应用...

  • 设计模式概述

    设计模式 常用的设计模式可以概括为23种,也可以分成三大类,5种创建型设计模式,7种结构型设计模式,9种行为型创造...

  • 设计模式-创建型设计模式

    //本文参考菜鸟教程设计模式主要分为三大类创建型模式,结构型模式,行为型模式,本文主要讲创建型模式创建型模式,共五...

  • 设计模式-行为型设计模式

    //本文参考菜鸟教程设计模式主要分为三大类创建型模式,结构型模式,行为型模式,本文主要讲行为型模式行为型模式,共十...

  • 设计模式-结构型设计模式

    //本文参考菜鸟教程设计模式主要分为三大类创建型模式,结构型模式,行为型模式,本文主要讲结构型模式结构型模式,共七...

  • 单例模式 Singleton Pattern

    单例模式-菜鸟教程 iOS中的设计模式——单例(Singleton) iOS-单例模式写一次就够了 如何正确地写出...

  • java设计模式23种

    极客学院-23 种设计模式 Java之美[从菜鸟到高手演变]之设计模式Java之美[从菜鸟到高手演变]之设计模式 ...

网友评论

    本文标题:设计模式|菜鸟教程 - C2 创造型模式

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