设计模式之三大类

目录

设计模式分类

1.创建型模式(Creational Patters)

2.结构型模式(Structural Patterns)

3.行为型模式(Behavioral Patterns)

3.1命令模式(The Command  Pattern)

2.1适配器模式

2.1.1Object and Class Adapters


设计模式分类

1.创建型模式(Creational Patters)

·Fatory Method

  - 本质:用一个Virtual method 完成创建过程

·Abstract Factory

  - 一个product族的factory method 构成了一个factory接口

·Protype

  - 通过product原型来构造product,Clone+prototype manager

·Buolder

  -通过一个构造算法和builder接口把构造过程与客户隔离开

·Singleton

  -单实例类型,如何构造这个单个实例?如何访问这单个实例?

·singleton模式提供对象的单一入口提供了帮助

·AbstractFactory和FactoryMethod模式在功能上比较类似,都是用来处理对象的创建的,但应用在不同的层面上

·Builder模式用来处理对象创建的细节,在两个工厂模式中都没有涉及到对象创建的具体细节,都是通过接口来返回一个给定类型的对象,而Builder模式则需要对创建一个给定类型的过程进行建模。这对创建复杂对象很有用,使得创建对象的算法独立与对象各个组成部分的创建

·Prototype模式使用原型机制,通过创建简单原型的拷贝来创建对象

2.结构型模式(Structural Patterns)

·Adapter 、 bridge 、 facade

  -adapter用于两个不兼容接口之间的转接

  -bridge用于将一个抽象与多个可能实现连接起来

  -facade 用于为复杂的子系统定义一个新的简单易用的接口

 ·composite 、decorator、proxy

  - composite 用于构造对象组合结构

  - decorator 用于对象增加新的职责

  - proxy 为目标对象提供一个替代者

3.行为型模式(Behavioral Patterns)

·Command

  -用对象封装命令,使得命令可以被传递、记录、排队等

·Iterator

  -把对聚合体对象的访问封装起来

·Observer

  -建立起一对多的通信模型,特别适合于更新通知和事件模型

·Strategy

  -把一个对象或者类的某些行为封装到另一个单独的对象中

·Visitor

  -把对一个结构模型的操作单独组织到一个类中

·Chain of Responsibility

  -请求的处理模式,沿着链传递,decouple发送方和接收方

·Interpreter

  -在类层次结构中,在特定环境的”interpret”过程

·Mediator

  -用一个mediator来的couple各同等单元

·Memento

  -在对象之外保存对象的内部状态

·State

  -把一个对象的状态独立起来,动态可变换状态对象的类型

·Template Method

  -在基类中定义算法的骨架,把某些细节延迟到子类中

·Strategy 、 Iterator 、Mediator 、State 、Command

  -用一个对象来封装某些特性,比如变化、交互、状态、行为、命令

·Mediator 、Observer

  - Observer建立起subject和observer之间的送耦合连接

  -mediator把约束限制集中起来->中心控制

·Command 、Chain of Responsibility 、interpreter

  -command模式侧重于命令的总体管理

  -Chain of Responsibility 侧重于命令被正确处理

  -interpreter用于复合结构中操作的执行过程

3.1命令模式(The Command  Pattern)

·Client:创建一个ConcreteCommand 对象,调用者’并确定其接收者。‘

·Command:生命一个给所有具体命令类的接口

·ConcereCommand:定义一个接收者和行为之间的弱耦合,实现exectute()方法,该方法调用接收者响相应的操作

·Invoker:伏在调用命令对象执行请求

·Receiver:具体实施一个请求

举例:

毛利五郎上厕所,发现厕所没纸了,让柯南送纸。

2.1适配器模式

·现实世界中充满适配器!

·面向对象适配器

2.1.1Object and Class Adapters

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

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

相关文章

SaaS系统相比传统软件,为何数据更安全?

随着云计算、5G等技术的不断进步,SaaS行业步入了快速发展的阶段,应用场景也日趋多元化。预计2023年底,中国SaaS行业市场规模将达到555.1亿元。 中研网对于SaaS发展态势预测这样评价: 当前,我国在多个维度上具备发展 S…

【机器学习】处理样本不平衡的问题

文章目录 样本不均衡的概念及影响样本不均衡的解决方法样本层面欠采样 (undersampling)过采样数据增强 损失函数层面模型层面采样集成学习 决策及评估指标 样本不均衡的概念及影响 机器学习中,样本不均衡问题经常遇到,比如在金融…

详解Kafka分区机制原理|Kafka 系列 二

Kafka 系列第二篇,详解分区机制原理。为了不错过更新,请大家将本号“设为星标”。 点击上方“后端开发技术”,选择“设为星标” ,优质资源及时送达 上一篇文章介绍了 Kafka 的基本概念和术语,里面有个概念是 分区(Part…

验证码安全志:AIGC+集成环境信息信息检测

目录 知己知彼,黑灰产破解验证码的过程 AIGC加持,防范黑灰产的破解 魔高一丈,黑灰产AIGC突破常规验证码 双重防护,保障验证码安全 黑灰产经常采用批量撞库方式登录用户账号,然后进行违法违规操作。 黑灰产将各种方…

鸿鹄工程项目管理系统em Spring Cloud+Spring Boot+前后端分离构建工程项目管理系统 em

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目…

算法与数据结构-跳表

文章目录 什么是跳表跳表的时间复杂度跳表的空间复杂度如何高效的插入和删除跳表索引动态更新代码示例 什么是跳表 对于一个单链表来讲,即便链表中存储的数据是有序的,如果我们要想在其中查找某个数据,也只能从头到尾遍历链表。这样查找效率…

Makefile

什么是 Makefile 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中, Makefile文件定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编 译,哪些文件需要重新编译,甚至于进行更复杂的功…

Plecs最新安装免费版下载链接/Plecs 电力仿真软件4.7.5版本下载/实测能用

Plecs最新安装免费版下载链接 Plecs 电力仿真软件4.7.5版本下载 实测能用:

Flutter 让软键盘不再自动弹起

1、问题说明: 在开发中,经常遇到这种事,一个页面有输入框,点击输入框后,会弹起软键盘,同时输入框会聚焦,手动收起软键盘后,点击另一个按钮前往下一个页面或者显示一个弹窗&#xff0…

web集群学习--基于CentOS构建LVS-DR集群、配置nginx负载均衡

基于CentOS构建LVS-DR集群 环境准备 主机名 ip地址 node1 192.168.1.140 client node2 192.168.1.141 LVS node3 192.168.1.142 RS1 node4 192.168.1.143 RS2配置 1.关闭防火墙和SELinux [rootclient~]# systemctl stop firewalld [rootclient~]# systemctl disabl…

数据可视化(八)堆叠图,双y轴,热力图

1.双y轴绘制 #双Y轴可视化数据分析图表 #add_subplot() dfpd.read_excel(mrbook.xlsx) x[i for i in range(1,7)] y1df[销量] y2df[rate] #用来正常显示负号 plt.rcParams[axes.unicode_minus]False figplt.figure() ax1fig.add_subplot(1,1,1)#一行一列,第一个区域…

机器学习笔记:李宏毅ChatGPT Finetune VS Prompt

1 两种大语言模型:GPT VS BERT 2 对于大语言模型的两种不同期待 2.1 “专才” 2.1.1 成为专才的好处 Is ChatGPT A Good Translator? A Preliminary Study 2023 Arxiv 箭头方向指的是从哪个方向往哪个方向翻译 表格里面的数值越大表示翻译的越好 可以发现专门做翻…

HOT79-跳跃游戏 II

leetcode原题链接&#xff1a;跳跃游戏 II 题目描述 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j &…

笔记本WIFI连接无网络【实测有效,不用重启电脑】

笔记本Wifi连接无网络实测有效解决方案 问题描述&#xff1a; 笔记本买来一段时间后&#xff0c;WIFI网络连接开机一段时间还正常连接&#xff0c;但是过一段时间显示网络连接不上&#xff0c;重启电脑太麻烦&#xff0c;选择编写重启网络脚本解决。三步解决问题。 解决方案&a…

2.4 网络安全新技术

数据参考&#xff1a;CISP官方 目录 云计算安全大数据安全移动互联网安全物联网安全工业互联网安全 一、云计算安全 1、云计算定义 云计算是指通过网络访问可扩展的、灵活的物理或虚拟共享资源池&#xff0c;并按需自助获取和管理资源的模式。在云计算中&#xff0c;计算资…

SDXL 1.0出图效果直逼Midjourney!手把手教你快速体验!

介绍 最近&#xff0c;Stability AI正式推出了全新的SDXL 1.0版本。经过我的实际测试&#xff0c;与之前的1.5版本相比&#xff0c;XL的效果有了巨大的提升&#xff0c;可以说是全方位的超越。不仅在理解提示词方面表现出色&#xff0c;而且图片的构图、颜色渲染和画面细腻程度…

一零六七、JVM梳理

JVM&#xff1f; Java虚拟机&#xff0c;可以理解为Java程序的运行环境&#xff0c;可以执行Java字节码&#xff08;Java bytecode&#xff09;并提供了内存管理、垃圾回收、线程管理等功能 java内存区域划分?每块内存中都对应什么? 方法区&#xff1a;类的结构信息、常量池、…

排序算法(九大)- C++实现

目录 基数排序 快速排序 Hoare版本&#xff08;单趟&#xff09; 快速排序优化 三数取中 小区间优化 挖坑法&#xff08;单趟&#xff09; 前后指针法&#xff08;单趟&#xff09; 非递归实现&#xff08;快排&#xff09; 归并排序 非递归实现&#xff08;归并&am…

奥威BI—数字化转型首选,以数据驱动企业发展

奥威BI系统BI方案可以迅速构建企业级大数据分析平台&#xff0c;可以将大量数据转化为直观、易于理解的图表和图形&#xff0c;推动和促进数字化转型的进程&#xff0c;帮助企业更好地了解自身的运营状况&#xff0c;及时发现问题并采取相应的措施&#xff0c;提高运营效率和质…

【数据结构】双链表

【数据结构】双链表 一. 前言二. 带头双向链表接口实现1.准备工作2. 创建一个节点 三. 初始化4. 打印5. 尾插6. 尾删7. 头插8. 头删9. 计算节点个数10. 查找数据11. 在任意位置插入数据12. 在任意位置删除数据13. 销毁 四. 如何10分钟内完成一个完整双链表 一. 前言 带头双向循…