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)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/241702.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用Visual Studio(VS)创建空项目的Win32桌面应用程序【main函数入口变WinMain】

前言 在Visual Studio中直接新建Windows桌面应用程序会有很多多余的代码生成,本文将提供从空项目创建Win32项目的方法,解决新建空项目直接使用WinMain代码编译报错的问题 例如:LNK2019 :无法解析的外部符号 参考博客&#xff1…

kafka 详细介绍

目录 前言 分布式架构: 消息发布-订阅模型: 持久性存储: 分区和副本: 水平扩展: 高性能: 生态系统: 我的其他博客 前言 Kafka 是由 Apache 软件基金会开发的一种开源流处理平台&#xf…

常见的计算机图片格式

左rgb (光源色彩) 右cmyk (印刷色彩) 缺点,不能保存,储存空间太大

【概率方法】MCMC 之 Gibbs 采样

上一篇文章讲到,MCMC 中的 HM 算法,它可以解决拒绝采样效率低的问题,但是实际上,当维度高的时候 HM 算法还是在同时处理多个维度,以两个变量 x [ x , y ] \mathbf{x} [x,y] x[x,y] 来说,也就是同时从联合…

etcd集群部署、备份还原、etcdctl命令行工具

目录 前言什么是etcdetcd名词raft协议-摘抄自《etcd技术内幕》etcd的部署要求二进制部署etcd查看etcd命令帮助创建etcd集群,使用systemd管理,http协议创建etcd集群,使用systemd管理,https协议etcdctl客户端工具的使用为etcdctl创建…

如何利用视频号爆款数据分析平台,实现播放变现?

利用视频号爆款数据分析平台了解当下视频号热点视频,以及那个分类更有潜力,可以即使进行预判, 变现是近年来非常流行的一种商业模式。视频号爆款数据分析平台是视频下载plus的一个功能,可以让用户通过每天都热点数据以及热门榜单…

Qt6.5类库实例大全:QWidget

哈喽大家好,我是20YC小二!欢迎扫码关注公众号,现在可免费领取《C程序员》在线视频教程哦! ~下面开始今天的分享内容~ 1. QWidget介绍 QWidget 是 Qt 框架中的一个核心类,用于创建图形用户界面(GUI)应用程序的基本可视…

YOLOv8改进 | 2023主干篇 | 替换LSKNet遥感目标检测主干 (附代码+修改教程+结构讲解)

一、本文介绍 本文给大家带来的改进内容是LSKNet(Large Kernel Selection, LK Selection),其是一种专为遥感目标检测设计的网络架构,其核心思想是动态调整其大的空间感受野,以更好地捕捉遥感场景中不同对象的范围上下…

【LeetCode刷题-字符串】--151.反转字符串中的单词

151.反转字符串中的单词 方法:从后向前遍历双指针 class Solution {public String reverseWords(String s) {//直接从后向前遍历,使用双指针int start,end;StringBuilder builder new StringBuilder();for(int i s.length()-1;i>0;i--){if(s.charA…

PHP基础 - 类型比较

在 PHP 中,作为一种弱类型语言,它提供了松散比较和严格比较两种方式来比较变量的值和类型。 松散比较: 使用两个等号(==)进行比较,只会比较变量的值,而不会考虑它们的数据类型。例如: $a = 5; // 整数 $b = 5; // 字符串if ($a == $b) {echo "相等"; // 输…

C语言 文件I/O(备查)

所有案列 跳转到其他。 文件打开 FILE* fopen(const char *filename, const char *mode); 参数:filename:指定要打开的文件名,需要加上路径(相对、绝对路径)mode:指定文件的打开模式 返回值:成…

【八】python装饰器模式

文章目录 8.1 装饰器模式简介8.2 装饰器模式作用8.3 装饰器模式构成8.3.1 装饰器模式包含以下几个核心角色:8.3.2 UML类图 8.4 装饰器模式python代码实现8.4.1 基本装饰器的使用8.4.2 多个装饰器的执行顺序8.4.3 带返回值的装饰器的使用8.4.4 装饰器模式-关联类模式…

「C++」内存管理

🎇个人主页:Ice_Sugar_7 🎇所属专栏:C启航 🎇欢迎点赞收藏加关注哦! 文章目录 🍉内存分布🍉关键字new🍉关键字delete🍉new和delete的封装实现🍉总…

牛客——不重复数字(哈希表、平衡树)

今天的第二题。下面这道题呢有两种解法,一种基于哈希表,一种基于平衡树。 登录—专业IT笔试面试备考平台_牛客网 题目描述 给出N个数,要求把其中重复的去掉,只保留第一次出现的数。 例如,给出的数为1 2 18 3 3 …

接口测试要测试什么?怎么测?

本文主要分为两个部分: 第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系 第二部分:主要介绍为什么要做接口测试,并简单总结接口持续集成和接口质量评估…

Java调用百度翻译API和调用有道翻译API进行翻译

目录 界面编写 调用百度API 调用有道API 源代码 界面编写 我们首先需要设计出这个翻译程序的GUI界面,我们写一个类继承自JFrame类,用来展示程序的主窗口,设置好窗口的名称和大小,设置在关闭窗口时终止程序,为了界…

React Native:入门知识了解

什么是React Native React Native(简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安卓两大平台。React Native使用Javascript语言&am…

功能更新|免费敏捷工具Leangoo领歌私有部署新增第三方身份认证和API对接

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具,提供端到端敏捷研发管理解决方案,涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 Leangoo支持敏捷研发管理全流程,包括小型团队敏捷开发,规模化敏捷SAFe,Scr…

windows数据备份方法

信息时代数据已成为个人及企业的重要资产,数据丢失或者损坏会带来无法弥补的损失。数据安全主要关注两个方面数据容灾和数据备份。容灾的目的是防止硬件发生错误,通过多个相同或类似硬件避免单一硬件故障造成的数据丢失。数据备份除了可以防止单一硬件错…

使用QT基于YMODEM协议实现串口文件发送(和xshell互通)

背景 项目需要用QT实现一个YMODEM文件传输的功能,目标下位机是MCU嵌入式设备,且下位机程序已经经过xshell传输文件的验证。 YMODEM 简介 YMODEM协议是一个文件传输协议,常用于嵌入式设备。本文不对YMODEM做过多的阐述,阅读需建…