23種設計模式一覽【設計模式】

文章目錄

  • 前言
  • 一、創建型模式(Creational Patterns)
  • 二、結構型模式(Structural Patterns)
  • 三、行為型模式(Behavioral Patterns)


前言

設計模式是軟件工程中用來解決特定問題的一組解決方案。它們是經過驗證的、可重用的解決方案,可以在不同的軟件項目中應用。

在這里插入圖片描述

一、創建型模式(Creational Patterns)

  • 單例模式(Singleton):確保一個類只有一個實例,并提供一個全局訪問點。
  • 工廠方法模式(Factory Method):定義創建對象的接口,讓子類決定實例化哪一個類。
  • 抽象工廠模式(Abstract Factory):創建相關或依賴對象的家族,而不需明確指定具體類。
  • 建造者模式(Builder):構建一個復雜的對象,并允許按步驟構造。
  • 原型模式(Prototype):通過拷貝現有的實例創建新的實例,而不是通過新建。

二、結構型模式(Structural Patterns)

  • 適配器模式(Adapter):允許對象間的接口不兼容問題通過一個中間層來解決。
  • 裝飾器模式(Decorator):動態地給一個對象添加額外的職責。
  • 代理模式(Proxy):為另一個對象提供一個代替或占位符以控制對它的訪問。
  • 外觀模式(Facade):為子系統中的一組接口提供一個統一的高層接口。
  • 橋接模式(Bridge):將抽象部分與其實現部分分離,使它們可以獨立地變化。
  • 組合模式(Composite):將對象組合成樹形結構以表示“部分-整體”的層次結構。
  • 享元模式(Flyweight):通過共享來高效地支持大量細粒度的對象。

三、行為型模式(Behavioral Patterns)

  • 策略模式(Strategy):定義一系列算法,把它們一個個封裝起來,并使它們可互換。
  • 模板方法模式(Template Method):在方法中定義算法的骨架,延遲到子類中實現。
  • 觀察者模式(Observer):對象間的一對多依賴關系,當一個對象改變狀態時,所有依賴于它的對象都會得到通知并自動更新。
  • 迭代器模式(Iterator):順序訪問一個聚合對象中的各個元素,不暴露其內部的表示。
  • 責任鏈模式(Chain of Responsibility):使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關系。
  • 命令模式(Command):將請求封裝為一個對象,從而使用戶可用不同的請求對客戶進行參數化。
  • 備忘錄模式(Memento):在不破壞封裝性的前提下,捕獲一個對象的內部狀態,并在該對象之外保存這個狀態。
  • 狀態模式(State):允許一個對象在其內部狀態發生改變時改變其行為。
    訪問者模式(Visitor):為一個對象結構(如組合結構)增加新能力。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897004.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897004.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897004.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

極狐GitLab 17.9 正式發布,40+ DevSecOps 重點功能解讀【三】

GitLab 是一個全球知名的一體化 DevOps 平臺,很多人都通過私有化部署 GitLab 來進行源代碼托管。極狐GitLab 是 GitLab 在中國的發行版,專門為中國程序員服務。可以一鍵式部署極狐GitLab。 學習極狐GitLab 的相關資料: 極狐GitLab 官網極狐…

elk的相關的基礎

以下是關于ELK(Elasticsearch, Logstash, Kibana)的200個基礎問題及其答案,涵蓋了ELK的核心概念、組件、配置、使用場景、優化等方面。 ?Elasticsearch 基礎 ?**什么是Elasticsearch?**? 答:Elasticsearch是一個分…

Beyond Compare for mac v5.0.6.30713 文件對比利器 支持M、Intel芯片

Mac毒搜集到的Beyond Compare是一套超級的文件及文件夾(目錄)的比較工具,不僅可以快速比較出兩個目錄的不同,還可以比較每個文件的內容,而且可以任意顯示比較結果。 應用介紹 程序內建了文件瀏覽器,方便您對文件、文件夾、壓縮包…

ProfibusDP主站轉ModbusTCP網關如何進行數據互換

ProfibusDP主站轉ModbusTCP網關如何進行數據互換 在現代工業自動化領域,通信協議的多樣性和復雜性不斷增加。Profibus DP作為一種經典的現場總線標準,廣泛應用于工業控制網絡中;而Modbus TCP作為基于以太網的通信協議,因其簡單易…

python代碼注釋方式

在 Python 中,注釋是用于解釋代碼、提高代碼可讀性和可維護性的重要工具。Python 支持兩種主要的注釋方式:單行注釋和多行注釋。此外,Python 還支持文檔字符串(docstrings),用于為模塊、函數、類和方法提供…

【雜談】信創電腦華為w515(統信系統)登錄鎖定及忘記密碼處理

華為w515麒麟芯片版,還有非麒麟芯片版本,是一款信創電腦,一般安裝的UOS系統。 準備一個空U盤,先下載鏡像文件及啟動盤制作工具,連接如下: 百度網盤 請輸入提取碼 http://livecd.uostools.com/img/apps/l…

數據結構秘籍(四) 堆 (詳細包含用途、分類、存儲、操作等)

1 引言 什么是堆? 堆是一種滿足以下條件的樹:(樹這一篇可以參考我的文章數據結構秘籍(三)樹 (含二叉樹的分類、存儲和定義)-CSDN博客) 堆中的每一個結點值都大于等于&#xff08…

#define GBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg))

這個宏 #define GBB_DEPRECATED_MSG(msg) __declspec(deprecated(msg)) 是用來在 C++ 中標記某些函數、變量或者代碼元素為已棄用(deprecated)的,并附帶一個自定義的棄用消息。 具體解釋: __declspec(deprecated(msg)): __declspec 是 Microsoft Visual C++ (MSVC) 的擴展…

服務器數據恢復—raid5陣列中硬盤掉線導致上層應用不可用的數據恢復案例

服務器數據恢復環境&故障: 某公司一臺服務器,服務器上有一組由8塊硬盤組建的raid5磁盤陣列。 磁盤陣列中2塊硬盤的指示燈顯示異常,其他硬盤指示燈顯示正常。上層應用不可用。 服務器數據恢復過程: 1、將服務器中所有硬盤編號…

全網獨家:zabbixV7版本容器服務器無法訪問Postgres V17數據庫的問題解決

近期將zabbix平臺從V6.2.6升級到7.2.4,遇到問題“PostgresoL server is not available. Waiting 5seconds”,容器無法訪問Postgres V17數據庫,本文記錄問題解決過程。 一、系統環境 1、數據庫版本 數據庫版本:postgres-17.4-tim…

進程控制 ─── linux第15課

目錄 進程控制 1.進程創建 (fork前面講過了) 寫時拷貝 進程終止 進程退出場景 退出碼 進程終止方法 進程控制 1.進程創建 (fork前面講過了) 在linux中fork函數時非常重要的函數,它從已存在進程中創建一個新進程。新進程為子進程,而原進程為父…

常見的網絡協議介紹

一、什么是網絡協議 指的是通信雙方的數據發送和接收順序,數據的封裝規則。 通俗解釋:描述雙方發送和接收的每個字節是按照什么規則。 二、TCP/IP體系的常用協議 (一)應用層 HTTP:超文本協議;指的是用來傳輸文本網頁的協議&#…

Hive-07之企業級調優

????????hive的企業級調優 1、Fetch抓取 Fetch抓取是指,Hive中對某些情況的查詢可以不必使用MapReduce計算 例如:select * from score;在這種情況下,Hive可以簡單地讀取employee對應的存儲目錄下的文件,然后輸出查詢結果…

華為云 | 快速搭建DeepSeek推理系統

DeepSeek(深度求索)作為一款國產AI大模型,憑借其高性能、低成本和多模態融合能力,在人工智能領域崛起,并在多個行業中展現出廣泛的應用潛力。 如上所示,在華為云解決方案實踐中,華為云提供的快速…

Spring Boot 3 整合 MinIO 實現分布式文件存儲

引言 文件存儲已成為一個做任何應用都不可回避的需求。傳統的單機文件存儲方案在面對大規模數據和高并發訪問時往往力不從心,而分布式文件存儲系統則提供了更好的解決方案。本篇文章我將基于Spring Boot 3 為大家講解如何基于MinIO來實現分布式文件存儲。 分布式存…

3月5日作業

代碼作業: #!/bin/bash# 清空目錄函數 safe_clear_dir() {local dir"$1"local name"$2"if [ -d "$dir" ]; thenwhile true; doread -p "檢測到 $name 目錄已存在,請選擇操作: 1) 清空目錄內容 2) 保留目…

達夢數據庫關于參數PK_WITH_CLUSTER的改動分析

目錄 1、PK_WITH_CLUSTER取值為0 2、PK_WITH_CLUSTER取值為1 達夢數據庫的參數PK_WITH_CLUSTER在最近使用過程中發現與前期使用的版本存在差異,特此測試分析一下。具體哪個版本改動的暫未得知。 PK_WITH_CLUSTER,默認值為0,動態會話級參數。…

android11使用gpio口控制led狀態燈

目錄 一、簡介 二、解決方法 A、底層驅動 B、上層調用 C、驗證 一、簡介 1、需求:這里是用2個gpio口來控制LED燈,開機時默認亮藍燈,按開機鍵,休眠亮紅燈,喚醒亮藍燈。 原理圖: 這里由于主板上電阻R63…

windows 利用nvm 管理node.js 2025最新版

1.首先在下載nvm 下載鏈接 2. 下載最新版本的nvm 3. 同意協議 注意:選擇安裝路徑 之后一直下一步即可 可以取消勾選 open with Powershell 勾選后它會自動打開Powershell 這里選用cmd 輸入以下命令查看是否安裝成功 nvm version 查看已經安裝的版本 我之前自…

深入淺出:UniApp 從入門到精通全指南

https://juejin.cn/post/7440119937644101684 uni-app官網 本文是關于 UniApp 從入門到精通的全指南,涵蓋基礎入門(環境搭建、創建項目、項目結構、編寫運行)、核心概念與進階知識(組件與開發、頁面路由與導航、數據綁定與響應式…