文章目录

  • GOF-23 设计模式分类
    • 一、从目的分类
      • 1. 创建型(Creational)模式
      • 2. 结构型(Structural)模式
      • 3. 行为型(Behavioral)模式
    • 二、从范围分类
      • 1. 类模式(Class Pattern)
      • 2. 对象模式(Object Pattern)
    • 三、分类说明
  • 从封装变化角度对模式分类
    • 一、组件协作
      • 定义
      • Template Method(模板方法模式)
      • Observer / Event(观察者/事件模式)
      • Strategy(策略模式)
    • 二、单一职责
      • Decorator(装饰器模式)
      • Bridge(桥接模式)
    • 三、对象创建
      • Factory Method(工厂方法模式)
      • Abstract Factory(抽象工厂模式)
      • Prototype(原型模式)
      • Builder(建造者模式)
    • 四、对象性能
      • Singleton(单例模式)
      • Flyweight(享元模式)
    • 五、接口隔离
      • Façade(外观模式)
      • Proxy(代理模式)
      • Mediator(中介者模式)
      • Adapter(适配器模式)
    • 六、状态变化
      • Memento(备忘录模式)
      • State(状态模式)
    • 七、数据结构
      • Composite(组合模式)
      • Iterator(迭代器模式)
      • Chain of Responsibility(责任链模式)
    • 八、行为变化
      • Command(命令模式)
      • Visitor(访问者模式)
    • 九、领域问题
      • Interpreter(解释器模式)

GOF-23 设计模式分类

一、从目的分类

1. 创建型(Creational)模式

  • 核心目标:应对需求变化对对象创建时具体类型实现的影响
  • 实现方式:将对象创建的职责延迟到子类或其他对象
  • 典型模式:工厂方法、抽象工厂、单例、建造者、原型

2. 结构型(Structural)模式

  • 核心目标:应对需求变化对对象结构的影响
  • 实现方式:通过类继承或对象组合构建更灵活的结构
  • 典型模式:适配器、装饰器、代理、组合、桥接

3. 行为型(Behavioral)模式

  • 核心目标:应对需求变化对多个交互对象的影响
  • 实现方式:通过类继承或对象组合划分职责
  • 典型模式:观察者、策略、命令、状态、模板方法

二、从范围分类

1. 类模式(Class Pattern)

  • 关注点:类与子类的静态关系
  • 实现方式:依赖继承机制(编译时确定)
  • 典型模式:模板方法、工厂方法、抽象工厂

2. 对象模式(Object Pattern)

  • 关注点:对象间的动态关系
  • 实现方式:依赖组合/聚合(运行时确定)
  • 典型模式:策略、装饰器、观察者、代理

三、分类说明

分类维度创建型结构型行为型
目的解决对象创建问题解决对象结构问题解决对象交互与职责划分问题
范围可能涉及类模式/对象模式主要为对象模式主要为对象模式

从封装变化角度对模式分类

一、组件协作

定义

现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。

Template Method(模板方法模式)

定义算法骨架,延迟部分步骤到子类。

Observer / Event(观察者/事件模式)

一对多依赖关系,状态变化时通知观察者。

Strategy(策略模式)

封装可替换的算法策略,动态切换行为。


二、单一职责

Decorator(装饰器模式)

动态添加职责,避免类爆炸。

Bridge(桥接模式)

分离抽象与实现,独立扩展两者。


三、对象创建

Factory Method(工厂方法模式)

定义对象创建接口,由子类实现具体创建。

Abstract Factory(抽象工厂模式)

创建一组相关或依赖的对象族。

Prototype(原型模式)

通过复制原型对象创建新实例。

Builder(建造者模式)

分步构建复杂对象。


四、对象性能

Singleton(单例模式)

确保类只有一个实例,全局访问点。

Flyweight(享元模式)

共享细粒度对象,减少内存消耗。


五、接口隔离

Façade(外观模式)

简化复杂子系统的接口。

Proxy(代理模式)

控制对目标对象的访问。

Mediator(中介者模式)

集中管理对象交互,降低耦合。

Adapter(适配器模式)

适配不兼容接口,促进复用。


六、状态变化

Memento(备忘录模式)

保存和恢复对象状态。

State(状态模式)

对象行为随内部状态改变。


七、数据结构

Composite(组合模式)

树形结构组合对象。

Iterator(迭代器模式)

顺序访问聚合对象元素。

Chain of Responsibility(责任链模式)

链式传递请求,灵活处理。


八、行为变化

Command(命令模式)

将请求封装为对象,支持参数化和日志记录。

Visitor(访问者模式)

对元素集合执行操作,分离算法与结构。


九、领域问题

Interpreter(解释器模式)

定义语言语法并解释执行。

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

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

相关文章

AbMole| LY294002(M1925)

LY294002是一种广谱的PI3K抑制剂,对PI3Kα/δ/β的IC50分别为0.5 μM/0.57 μM/0.97 μM。LY294002 也可以抑制 CK2 的活性,IC50 为 98 nM。LY294002 还是一种竞争性 DNA-PK 抑制剂,可逆结合 DNA-PK 的激酶结构域,IC50 为 1.4 μM…

第1章,[标签 Win32] :第一个 WIn32 程序,MessageBox 函数

专栏导航 上一篇:第1章,[标签 Win32] :第一个 WIn32 程序,程序入口 回到目录 下一篇:无 本节前言 本节的学习,需要前两节的内容作为先修知识。如果还没有去看本专栏的前两节,请你先去学习它…

求助帖:学Java开发方向还是网络安全方向前景好

最近网络安全被一个培训机构吹得天花乱坠,虽然他家既有网安又有java和UI,我也是学软件工程的(山西某211,此机构是每年和我们学校合作的校企公司),但那里的老师仍然大力推荐我学网络安全(渗透、代…

OpenCV 图像仿射变换之旋转

一、知识点 1、void warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags INTER_LINEAR, int borderMode BORDER_CONSTANT, …

HCIP-数据通信基础

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 本篇笔记是根据B站上的视频教程整理而成,感谢UP主的精彩讲解!如果需要了解更多细节,可以参考以下视频:…

C语言基本数据类型与变量详解

# C语言基本数据类型与变量详解 ## 数据类型概述 在C语言中,数据类型决定了变量在内存中的存储方式和大小,以及可以对其执行的操作。合理选择数据类型能够提高程序的效率和准确性,避免内存浪费和数据溢出等问题。 C语言的基本数据类型主要包括…

Babylon.js学习之路《十、高级几何体:自定义模型与复杂形状生成》

文章目录 1. 引言:高级几何体的应用场景2. 参数化建模:Babylon.MeshBuilder2.1 扩展几何体类型2.2 自定义多边形(ExtrudePolygon) 3. 顶点级建模:自定义VertexData3.1 手动定义顶点数据3.2 动态生成地形(高…

【赵渝强老师】Kubernetes的安全框架

Kubernetes集群的安全框架主要由以下认证、鉴权和准入控制三个阶段组成。这三个阶段的关系如下图所示。 视频讲解如下 【赵渝强老师】Kubernetes的安全框架 认证(Authentication) 当客户端与Kubernetes集群建立HTTP通信时,首先HTTP请求会进…

CDN与静态资源优化

CDN与静态资源优化 在现代Web系统和AI应用中,随着用户访问量的不断攀升,静态资源(如HTML、CSS、JavaScript、图片、音视频、模型文件等)带来的负载日益沉重。尤其在大模型推理、前端渲染、广告投放等场景中,静态资源的…

如何填写“appium inspector”内容?

1. 确认已经开启appium的服务,运行appium 参考内容:{"appium:platformName": "Android", # 系统名称"appium:platformVersion": "9", # 安卓版本,看设备"appium:deviceName": "3d…

mysql server层做了什么

服务器处理客户端请求 服务器程序在处理来自客户端的查询请求时,大致需要分为3部分:连接管理、解析与优化、存储引擎。 连接管理 每当有一个客户端进程连接到服务器进程时,服务器进程都会创建一个线程专门处理与这个客户端的交互&#xff…

APISIX 简介:云原生 API 网关的架构与实践

文章目录 引言:APISIX 概述基于Nginx构建的原因基于etcd构建的原因 架构图示架构分层解析管理层:人机交互与配置入口控制层:配置管理与集群协调数据面:请求处理与流量转发说明:关于OpenRestry 引言:APISIX …

【AI作画】第3章 LORA加载器

目录 LORA加载器 管道信息 ​编辑 ​编辑 ​编辑 lora模型的串接 作品集 LORA加载器 前面我们已经分析过节点目录了,现在我们来看一下LORA加载器。我们进行图片渲染,一般都需要LORA模型的。 首先,我们“鼠标右键——添加节点——…

Xilinx XC7A12T‑1CPG238I Artix‑7 FPGA

XC7A12T‑1CPG238I 以其独特的性能与封装组合,成为诸多工程师的首选方案。下面,我们从多个维度对这款芯片做深入剖析。 一、产品定位与封装特点 XC7A12T‑1CPG238I 属于赛灵思(Xilinx)28 nm Artix‑7 系列中的入门级型号&#x…

如何利用 Java 爬虫获得微店商品详情:实战指南

在电商领域,微店作为众多商家的线上销售渠道之一,其商品详情数据对于市场分析、竞品研究和商业决策具有重要价值。Java 爬虫技术可以帮助我们高效地获取这些数据。本文将详细介绍如何使用 Java 编写爬虫,获取微店商品详情。 一、准备工作 &…

【Bug】MAUI自定义弹窗在IOS有异常背景

文章目录 问题问题代码原因解决处理Bug的具体步骤 问题 自定义弹窗有异常背景 问题代码 <mct:Popup xmlns"http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x"http://schemas.microsoft.com/winfx/2009/xaml"xmlns:converters"clr-names…

C语言酒店管理系统:完整源码与深度解析

酒店管理系统通过自动化流程提升酒店运营效率。本系统采用C语言开发&#xff0c;基于模块化设计思想&#xff0c;包含以下核心功能&#xff1a; ​房间管理​&#xff1a;初始化房间信息、查看房间状态​预订管理​&#xff1a;按时间段预订房间、查询预订记录​入住管理​&am…

基于Gold-YOLO的聚合-分发机制改进YOLOv8教程

1. 引言 本文将详细介绍如何将Gold-YOLO的核心创新——聚合-分发(Gather-and-Distribute, GD)机制集成到YOLOv8架构中。Gold-YOLO是一种创新的目标检测架构,通过独特的信息融合策略实现了低延迟和高准确性的理想平衡。 1.1 Gold-YOLO核心特性 Gold-YOLO的主要创新点包括…

blob 的使用 文件下载 图片预览 大文件分片上传

1. 文件下载 function downloadFile(content, filename, type) {const blob new Blob([content], { type });const url URL.createObjectURL(blob);const a document.createElement(a);a.href url;a.download filename;a.click();URL.revokeObjectURL(url); }// 使用示例…

FlinkCDC-Hudi数据实时入湖原理篇

1.Hudi应用场景 面对海量数据开发场景&#xff0c;一种支持存储多种原始数据格式、多种计算引擎、高效的元数据统一管理的存储方式能极大的提高开发效率。所以在选择技术选型的时候&#xff0c;这种存储方式有以下几个特点&#xff1a; 存储原始数据&#xff0c;这些原始数据来…