「生活可以更简单, 欢迎来到我的开源世界」
  1. 简单工厂模式(Simple Factory)(⭐⭐⭐⭐)
    1. 模式定义
    2. 模式结构
    3. 模式分析
    4. 简单工厂模式的优点
    5. 简单工厂模式的缺点
    6. 适用环境
    7. 总结
  2. 工厂方法模式(Factory Method)(⭐⭐⭐⭐⭐)
    1. 模式定义
    2. 模式结构
    3. 模式分析
    4. 优点
    5. 缺点
    6. 适用环境
    7. 扩展
    8. 总结
  3. 抽象工厂模式(Abstract Factory)(⭐⭐⭐⭐⭐)
    1. 模式定义
    2. 模式结构
    3. 模式分析
    4. 优点
    5. 缺点
    6. 适用环境
    7. 拓展
      1. “开闭原则”的倾斜性
      2. 工厂模式的退化
    8. 总结
  4. 建造者模式(Builder)(⭐⭐)
    1. 模式定义
    2. 模式结构
    3. 模式分析
    4. 优点
    5. 缺点
    6. 适用环境
    7. 模式扩展
    8. 总结
  5. 单例模式(Singleton)(⭐⭐⭐⭐)
    1. 模式定义
    2. 模式结构
    3. 模式分析
    4. 实例
    5. 优点
    6. 缺点
    7. 适用环境
    8. 总结
  6. 原型模式(Prototype)(⭐⭐⭐)
创建型模式
2021-01-02

创建型模式

创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。

创建型模式在创建什么(What),由谁创建(Who),何时创建(When)等方面都为软件设计者提供了尽可能大的灵活性。创建型模式隐藏了类的实例的创建细节,通过隐藏对象如何被创建和组合在一起达到使整个系统独立的目的。

简单工厂模式(Simple Factory)(⭐⭐⭐⭐)

模式定义

简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类

模式结构

简单工厂模式包含如下角色:

模式分析

简单工厂模式的优点

简单工厂模式的缺点

适用环境

在以下情况下可以使用简单工厂模式:

总结

工厂方法模式(Factory Method)(⭐⭐⭐⭐⭐)

模式定义

工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。

模式结构

工厂方法模式包含如下角色:

模式分析

工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了面向对象的多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不负责哪一个产品类被实例化这种细节,这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。

优点

缺点

适用环境

在以下情况下可以使用工厂方法模式:

扩展

总结

抽象工厂模式(Abstract Factory)(⭐⭐⭐⭐⭐)

模式定义

抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,属于对象创建型模式。

模式结构

抽象工厂模式包含如下角色:

模式分析

优点

缺点

适用环境

在以下情况下可以使用抽象工厂模式:

在很多软件系统中需要更换界面主题,要求界面中的按钮、文本框、背景色等一起发生改变时,可以使用抽象工厂模式进行设计。

拓展

“开闭原则”的倾斜性

工厂模式的退化

总结

建造者模式(Builder)(⭐⭐)

模式定义

建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。

模式结构

建造者模式包含如下角色:

模式分析

抽象建造者类中定义了产品的创建方法和返回方法;

建造者模式的结构中还引入了一个指挥者类Director,该类的作用主要有两个:

在客户端代码中,无须关心产品对象的具体组装过程,只需确定具体建造者的类型即可,建造者模式将复杂对象的构建与对象的表现分离开来,这样使得同样的构建过程可以创建出不同的表现。

优点

缺点

适用环境

在以下情况下可以使用建造者模式:

在很多游戏软件中,地图包括天空、地面、背景等组成部分,人物角色包括人体、服装、装备等组成部分,可以使用建造者模式对其进行设计,通过不同的具体建造者创建不同类型的地图或人物。

模式扩展

建造者模式的简化:

建造者模式与抽象工厂模式的比较:

总结

单例模式(Singleton)(⭐⭐⭐⭐)

模式定义

单例模式(Singleton Pattern):单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。

单例模式的要点有三个:

  1. 某个类只能有一个实例;
  2. 它必须自行创建这个实例;
  3. 它必须自行向整个系统提供这个实例。

单例模式是一种对象创建型模式。单例模式又名单件模式或单态模式。

模式结构

单例模式包含如下角色:

模式分析

单例模式的目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式包含的角色只有一个,就是单例类——Singleton。单例类拥有一个私有构造函数,确保用户无法通过new关键字直接实例化它。除此之外,该模式中包含一个静态私有成员变量与静态公有的工厂方法,该工厂方法负责检验实例的存在性并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。

在单例模式的实现过程中,需要注意如下三点:

实例

在操作系统中,打印池(Print Spooler)是一个用于管理打印任务的应用程序,通过打印池用户可以删除、中止或者改变打印任务的优先级,在一个系统中只允许运行一个打印池对象,如果重复创建打印池则抛出异常。现使用单例模式来模拟实现打印池的设计。

一个具有自动编号主键的表可以有多个用户同时使用,但数据库中只能有一个地方分配下一个主键编号,否则会出现主键重复,因此该主键编号生成器必须具备唯一性,可以通过单例模式来实现。

优点

缺点

适用环境

在以下情况下可以使用单例模式:

总结

原型模式(Prototype)(⭐⭐⭐)

模式定义

模式结构

模式分析

优点

缺点

适用环境

总结

<⇧>