设计模式88

一、创建型模式(5种)

1、工厂方法模式

同一类产品的生产

2、抽象工厂模式

将同一个具体工厂所生产的位于不同等级的一组产品称为产品族,例如(衣服+鞋子+帽子)

同一级别

3、单例模式

4、建造者模式

建造者和指挥者

将一个复杂对象的构建(生产工厂,负责蓝图和具体的设计表示(组装工厂,负责具体开始组装)分离,使得同样的构建过程可以创建不同的表示。

解耦合,不同的组件可以建造不一样的整体。例如一台电脑需要很多零件,我们可以使用零件来创造一台电脑,由于解耦合,例如我们可以修改主板,这样就能装出不一样的主机。实现了构建算法、装配算法的解耦

分离了部件的构造(由Builder负责)和装配(由Director负责)。

有四个角色:

  • 抽象建造者类(Builder):这个接口规定要实现复杂对象哪些部分的创建,不涉及具体部件对象的创建(蓝图)
  • 具体建造类(ConcreateBuilder):实现Builder接口,完成复杂产品的各个部件的具体建造方法。
  • 产品类:要创建的复杂对象
  • 指挥者类(Director):调用具体建造者来创建复杂对象的各个部分,在指导者中不涉及具体产品的信息,只负责保证各个对象完整地创建或某种顺序创建

5、原型模式

用一个已经创建的instance作为原型,通过复制该对象来创建一个和原型对象相同的新对象

  • 抽象原型类:规定了具体原型对象必须实现的的 clone() 方法。
  • 具体原型类:实现抽象原型类的 clone() 方法,它是可被复制的对象。
  • 访问类:使用具体原型类中的 clone() 方法来复制新的对象

方法:

  1. 使用cloneable接口,里面只有一个clone方法
  2. 需要克隆(复制)的类实现这个接口
  3. 这个类重写clone方法,clone方法里return new Objcet(this)

原型模式的克隆分为浅克隆和深克隆:

浅克隆:创建一个新对象,新对象的属性和原来对象完全相同,对于非基本类型(如引用)属性,仍指向原有属性所指向对象的内存地址。

深克隆:创建一个新对象,属性中引用的其他对象也会被克隆,不再指向原有对象地址

  1. 结构型模式(7种):适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。这些模式关注如何将类或对象组合在一起形成更大的结构,以提供新的功能或优化现有的功能。
  2. 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。这些模式关注类和对象之间的交互方式,以及如何分配责任和算法来实现特定的业务逻辑。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python实现VMware自动化资源巡检

推送效果: E:\PYPJ1\Scripts\python.exe C:\Users\PycharmProjects\pythonProject\main.py 自动化巡检-执行时间:2024-03-25 14:47:04 Connected to vCenter Found datacenter: CN-SH-Datacenter----------存储资源指标---------- 资源总容量&#xff…

实验报告-04

实验名称:实验四 递推问题(一) 实验目的:熟练掌握一些递推问题的处理方法:仔细分析,不断尝试推理,充分利用数学知识,找出问题中的内在规律,抽象出递推的数学模型。 实验…

【c 语言 】malloc函数详解

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…

安卓手机APP开发者的第一件事:安装安卓工作台

安卓手机APP开发者的第一件事:安装安卓工作台 安装安卓工作台仅需要一些点击。首先检查软件对系统需求。 然后下载最新版本的安卓工作台。 在windows系统下的安装 需求项 最低配置 推荐配置 操作系统 64位的windows8 最新版本的64位的windows 内存 8GB …

LeetCode 热题 100 题解(一):哈希部分

《LeetCode热题 100》 经过了两个多月,终于刷完了代码随想录的题目,现在准备开始挑战热题一百了,接下来我会将自己的题解以博客的形式同步发到力扣和 c 站,希望在接下来的征程中与大家共勉! 题组一:哈希 题…

day22.二叉树part08

day22.二叉树part08 235.二叉搜索树的最近公共祖先 原题链接 代码随想录链接 思路:因为本题是二叉搜索树,利用它的特性可以从上往下进行递归遍历树,这里需要理解一点就是如果遍历到的一个节点发现该节点的值正好位于节点p和节点q的值中间…

Git实现提交代码自动更新package.json版本号

此文章主要讲诉如何通过git提交代码来自动更新我们的版本号,也可以指定固定分支才能更新 只要涉及到package version的项目都可以,例如:Vue、React、Node等等 前提是当前项目已经关联了Git仓库 一、编写我们的Node更新版本逻辑,名…

Debezium日常分享系列之:Debezium 2.6.0.CR1发布

Debezium日常分享系列之:Debezium 2.6.0.CR1发布 一、重大改变1.MySQL2.SQL Server3.Vitess 二、新功能和改进1.OpenLogReplicator 的 XML 支持2.Debezium 服务器的 TRACE 级别日志记录3.新的统一快照模式4.Cassandra 可配置分区模式 Debezium 2.6.0.CR1版本包含许多…

QSplashScreen

以前打红警的时候进入游戏界面会有一个启动界面,比如美国是有伞兵,英国有狙击手,韩国有黑鹰战机的一些介绍,这些就是启动界面,就是由QSplashScreen这个类来实现的。 QSplashScreen 是 Qt 框架中的一个类,用…

jsp用户登录界面

主界面 <% page contentType"text/html;charsetUTF-8" language"java" %> <html> <head><meta charset"UTF-8"><title>登录界面</title> </head> <body bgcolor"#faebd7"> <form…

HarmonyOS实战开发-UIAbility和自定义组件生命周期

介绍 本文档主要描述了应用运行过程中UIAbility和自定义组件的生命周期。对于UIAbility&#xff0c;描述了Create、Foreground、Background、Destroy四种生命周期。对于页面和自定义组件描述了aboutToAppear、onPageShow、onPageHide、onBackPress、aboutToDisappear五种生命周…

公司防泄密软件有哪些?|六款值得老板收藏的公司防泄密软件

文件数据是企业极为重要的知识产权&#xff0c;关系到企业的核心竞争力&#xff0c;对企业的发展至关重要&#xff0c;甚至直接影响到企业的生存和发展。 企业泄密事件也是屡屡发生&#xff0c;如何保护企业核心机密文件的安全已成为影响企业快速发展的重要因素。 针对企业数据…

1.Netty介绍及NIO三大组件

Netty网络编程Netty的底层是NIO&#xff08;非阻塞IO&#xff09;&#xff0c;常用的多线程和线程池使用的是阻塞IO&#xff0c;其效率并不高。支持高并发&#xff0c;性能好高性能的服务端程序、客户端程序 NIO三大组件 一、Channel 读写数据的双向传输通道 常见的传输通道…

【干货分享】OpenHarmony轻量系统适配方案

1. 简介 本文在不改变原有系统基础框架的基础上&#xff0c; 介绍了一种OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;轻量系统适配方案。 本方案使用的是 OpenHarmony v3.2 Release版本源码。 2. 方案设计 本文使用的硬件模块的主要特性及功能如…

fast_bev学习笔记

目录 一. 简述二. 输入输出三. github资源四. 复现推理过程4.1 cuda tensorrt 版 一. 简述 原文:Fast-BEV: A Fast and Strong Bird’s-Eye View Perception Baseline FAST BEV是一种高性能、快速推理和部署友好的解决方案&#xff0c;专为自动驾驶车载芯片设计。该框架主要包…

day 41 动归 04

01背包问题 二维 dp[i][j] 表示在物品i时&#xff0c;背包在j容量下的最大价值&#xff0c;递推公式为 dp[i][j] Math.max(dp[i-1][j] , dp[i-1][j-weight[i]] value[i]); 第一个时不放物品i&#xff0c;其价值等于在物品i-1时背包在j容量下的最大价值&#xff0c;第二个是放…

Oracle里的优化器

目录 一、RBO 二、CBO 1、集的势&#xff08;cardinality&#xff09; 2、可选择率&#xff08;Selectivity&#xff09; 3、可传递性 4、CBO的局限性 三、优化器基础知识 1、优化器的模式 2、结果集&#xff08;row source&#xff09; 3、访问数据的方法 优化器&am…

tab切换组件,可横向自适应滑动

示例图&#xff1a; 注&#xff1a;需要引入Jquery <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style>.tabs-box {width: 100%;height: auto;}.tab-header-box {display: flex;overflow: hidden…

2024年的抖音电商,将很难出现超级爆品,选品思路要及时改变

我是王路飞。 2024年以前的抖音电商市场&#xff0c;如果用一句话来形容的话&#xff0c;就是“风浪越大鱼越贵”。 但是从今年过完年之后&#xff0c;细心的商家可能发现了&#xff0c;以前的套路好像不管用了。 现在的市场利益分配方式变了&#xff01; 2024年的抖音电商…

Python程序怎么打包成exe文件

前言 pyinstaller可以将.py文件打包成.exe可执行文件&#xff0c;即使别人的电脑上没有搭建Python环境&#xff0c;也是可以直接运行程序的。 pyinstaller安装 首先打开cmd&#xff0c;在里面输入下面这一行命令&#xff0c;回车即可。 pip install pyinstaller 我运行命令…