设计模式之三大类

目录

设计模式分类

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.hqwc.cn/news/66320.html

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

相关文章

手撕数据结构之栈+例题

目录 一、栈的概念及结构 二、栈的头文件及基本框架 三、接口实现 1、对栈的初始化 2、栈的销毁 3、入栈操作 4、出栈操作 5、判断栈是否为空 6、返回栈顶元素 7、遍历栈 四、有效的括号 - 力扣(LeetCode) 题目描述: 思路&#xff…

Falco操作系统安全威胁监测利器

原理简介 Falco是一个开源的云原生安全工具,用于检测和防御容器和云原生环境中的安全威胁。它基于Linux内核的eBPF技术,通过监控系统调用和内核事件来实现安全检测和响应。 具体来说,Falco的实现原理如下: 1. 内核模块&#xf…

如何使用Spark/Flink等分布式计算引擎做网络入侵检测

如何使用Spark/Flink等分布式计算引擎做网络入侵检测 引言16 Distributed Abnormal Behavior Detection Approach Based on Deep Belief Network and Ensemble SVM Using Spark17 Spark configurations to optimize decision tree classification on UNSW-NB1518 A dynamic spa…

Windows Oracle21C与PLSQL Developer 15配置

1、下载Oracle21c并安装 下载地址:https://www.oracle.com/database/technologies/oracle21c-windows-downloads.html 2、下载PLSQL Developer 15并安装 下载地址:https://www.allroundautomations.com/products/pl-sql-developer/#pricing 3、配置O…

drawio导出矢量图

1.选中要导出的图 2.导出为pdf 3.用adobe打开pdf,另存为eps

NLP文本分类

NLP文本分类 落地实战五大利器!_kaiyuan_sjtu的博客-CSDN博客https://zhuanlan.zhihu.com/p/432619164 https://github.com/alibaba/EasyNLP/blob/master/README.cn.md

Lua学习记录

Lua基础了解 Lua的注释通过 (-- 单行注释,--[[ ]] 多行注释)可以不加; 多个变量赋值,按顺序赋值,没有则为nil; function的简单用法,多个返回值配合多重赋值,以end为结束标志 Lua下标从1开始&…

[鹤城杯 2021]Middle magic 解题思路过程

过程 打开题目&#xff0c;是一道PHP的代码审计。代码如下&#xff1a; <?php highlight_file(__FILE__); include "./flag.php"; include "./result.php"; if(isset($_GET[aaa]) && strlen($_GET[aaa]) < 20){$aaa preg_replace(/^(.*)…

opencv带GStreamer之Windows编译

目录 1、下载GStreamer和安装2. GSTReamer CMake配置3. 验证是否配置成功 1、下载GStreamer和安装 下载地址如下&#xff1a; gstreamer-1.0-msvc-x86_64-1.18.2.msi gstreamer-1.0-devel-msvc-x86_64-1.18.2.msi 安装目录无要求&#xff0c;主要是安装完设置环境变量 xxx\1…

6. CSS(三)

目录 一、盒子模型 &#xff08;一&#xff09;网页布局的本质 &#xff08;二&#xff09;盒子模型组成 &#xff08;三&#xff09;边框&#xff08;border&#xff09; &#xff08;四&#xff09;表格的细线边框 &#xff08;五&#xff09;内边距&#xff08;padding…

jupyter默认工作目录的更改

1、生成配置文件&#xff1a;打开Anaconda Prompt&#xff0c;输入如下命令 jupyter notebook --generate-config询问[y/N]时输入y 2、配置文件修改&#xff1a;根据打印路径打开配置文件jupyter_notebook_config.py&#xff0c;全文搜索找到notebook_dir所在位置。在单引号中…

VB6查表法编解Modbus RTU协议CRC16校验码

Modbus RTU协议CRC16编解码用VB6写起来比较啰嗦&#xff0c;需要做一些简单处理。下面就查表法&#xff0c;贴上源代码&#xff0c;并做一些简要说明。 源程序&#xff0c;对照上面的图看更方便。 Private Sub Command2_Click() Dim I As Integer, J As Integer Dim CRCHi As …