CH03_生成实例

Singleton模式

单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。

类图

在这里插入图片描述

说明

  • Singleton

    在Singleton模式中,只有Singleton这一个角色。Singleton角色中有一个返回唯一实例的static方法。该方法总是返回同一个实例。

Prototype 模式

原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

类图

在这里插入图片描述

说明

  • Prototype(原型)

    Product角色负责定义用于复制现有实例来生成新实例的方法,

  • ConcreteProtoType(具体的原型)

    ConcreteProtoType角色负责实现复制现有实例并生成新实例的方法。

  • Client(使用者)

    Client角色负责使用负责实例的方法生成新的实例

Builder模式

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

类图

在这里插入图片描述

时序图

在这里插入图片描述

说明

  • Builder(建造者)

    Builder角色负责定义用于生成实例的接口(API)。Builder角色中准备了用于生成实例的方法。

  • ConcreteBuilder(具体的建造者)

    ConcreteBuilder角色是负责实现Builder角色的接口的类(API)。这里定义了在生成实例时实际被调用的方法。此外,在ConcreteBuilder角色中还定义了获取最终生成结果的方法。

  • Director(监工)

    Director角色负责使用Builder角色的接口(API)来生成实例。它并不依赖于ConcreteBuilder角色。为了确保不论ConcreteBuilder角色是如何被定义的,Director角色都正常工作,它只调用在Builder角色中被定义的方法。

  • Client(使用者)

    该角色使用了Builder模式(Builder模式并不包含Client角色)。

Abstract Factory 模式

抽象工厂模式(Abstract Factory)提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

类图

在这里插入图片描述

说明

  • AbstractProduct(抽象产品)

    AbstractProduct角色负责定义AbstractFactory角色所生成的抽象零件和产品的接口(API)。

  • AbstractFactory(抽象工厂)

    AbstractFactory角色负责定义用于生成抽象产品的接口(API)。

  • Client(委托者)

    Client角色仅会调用AbstractFactory角色和AbstractProduct角色的接口(API)来进行工作,对于具体的零件,产品和工厂一无所知。

  • ConcreteProduct(具体产品)

    ConcreteProduct角色负责实现AbstractProduct角色的接口(API)。

  • ConcreteFactory(具体工厂)

    ConcreteFactory角色负责实现AbstractFactory角色的接口(API)。

相关推荐

  1. <span style='color:red;'>CH</span><span style='color:red;'>02</span>_XAML

    CH02_XAML

    2023-12-16 15:54:01      20 阅读
  2. linux 生成 ca 证书

    2023-12-16 15:54:01       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-16 15:54:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-16 15:54:01       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-16 15:54:01       82 阅读
  4. Python语言-面向对象

    2023-12-16 15:54:01       91 阅读

热门阅读

  1. 钉钉中预览打印PDF问题(无法使用blob地址)

    2023-12-16 15:54:01       96 阅读
  2. Nginx安装及基础指令

    2023-12-16 15:54:01       63 阅读
  3. ElasticSearch指南 - Mapping - Metadata fields

    2023-12-16 15:54:01       53 阅读
  4. 比whatsapp效果好---Google Messages RCS协议消息推送

    2023-12-16 15:54:01       64 阅读
  5. 假如董宇辉是个AI

    2023-12-16 15:54:01       59 阅读
  6. Linux学习教程(第十二章 Linux系统管理)二

    2023-12-16 15:54:01       36 阅读
  7. python 如何快速注释几行代码

    2023-12-16 15:54:01       61 阅读
  8. (洛谷)P8835 [传智杯 #3 决赛] 子串

    2023-12-16 15:54:01       54 阅读
  9. HAProxy 根据报文解析来定义不同的acl

    2023-12-16 15:54:01       50 阅读
  10. 【LeetCode】15. 三数之和(Set用法)

    2023-12-16 15:54:01       64 阅读
  11. C语言编程题-单身狗

    2023-12-16 15:54:01       55 阅读
  12. 小程序人脸识别—检测人脸图片获取图片

    2023-12-16 15:54:01       38 阅读
  13. 贪心算法总结

    2023-12-16 15:54:01       59 阅读