2-Python與設計模式--前言

0-Python與設計模式–前言

一 什么是設計模式

設計模式是面對各種問題進行提煉和抽象而形成的解決方案。這些設計方案是前人不斷試驗,
考慮了封裝性、復用性、效率、可修改、可移植等各種因素的高度總結。它不限于一種特定的語言,
它是一種解決問題的思想和方法

二 為什么要有設計模式

公司人事會有變動,程序員也會成長。不管是哪種情況,代碼非常有可能會被移交,即代碼的編寫者和維護者
很有可能會是不同的人。那么代碼的可讀性就顯得非常重要了。由于高級語言的出現,讓機器讀懂你的意圖
已經不是最主要的“矛盾”,而讓人讀懂你的意圖才是最重要。按照設計模式編寫的代碼,其可讀性也會大大
提升,利于團隊項目的繼承和擴展

三 有那些設計模式

設計模式可以分為三個大類:創建類設計模式、結構類設計模式、行為類設計模式創建類設計模式(5種)
單例模式、工廠模式(簡單工廠模式、抽象工廠模式)、建造者模式、原型模式結構類設計模式(7種)
代理模式、裝飾器模式、適配器模式、門面模式、組合模式、享元模式、橋梁模式行為類設計模式(11種)
策略模式、責任鏈模式、命令模式、中介者模式、模板模式、迭代器模式、訪問者模式、觀察者模式、
解釋器模式、備忘錄模式、狀態模式設計模式也衍生出了很多的新的種類,不局限于這23

四 設計模式與架構,框架的關系

1 軟件框架與設計模式的關系

軟件框架隨著軟件工程的發展而出現,所謂的軟件框架,是提取了特定領域的軟件的共性部分所形成的軟件體
系,它并不是一個成熟的軟件,而更像是一個“半成品”,程序員在框架之上,可以很方便地某些特定領域實現
又快又可靠的二次開發。設計模式和軟件框架在軟件設計中是兩個不同的研究領域:A、設計模式如前邊的定義所講,它指的是針對一類
問題的解決方法,一個設計模式可應用于不同的框架和被不同的語言所實現;而框架則是一個應用的體系結構,
是一種或多種設計模式和代碼的混合體;B、設計模式相較于框架更容易移植,并且可以用各種語言實現,
而軟件框架則受限于領域大環境。雖然設計模式和軟件框架有很多不同,但在某些方面他們二者是統一的,
即重視軟件復用,提高開發效率。

2 軟件架構與設計模式的關系

軟件架構是個比較大的概念,架構要考慮軟件的整體結構、層次劃分以及不同部分間的協作和交互等,
架構的著眼點偏整體。相比之下,框架和設計模式的范圍則具體很多,框架著眼于領域內的解決方法,
而設計模式則針對一類問題的解決方案和設計思路。總體來說,軟件架構可以由不同的框架和不同的設計模式,再加上特定的構件組合來實現;
框架可以根據設計模式結合特定編程語言和環境來實現。設計模式就是解決單一問題的設計思路和解決方法。

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

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

相關文章

GoogleNet詳解

一、亮點 AlexNet、VGG都只有一個輸出層。googlenet有三個(其中兩個是輔助分類層) 二、先看看Inception結構 1、Inception 之前的網絡: AlexNet、VGG都是串行結構 Inception: 并行結構 上一層的輸出同時傳入四個并行結構&…

有了傾斜攝影,如何搭建一座智慧城市?

隨著無人機航測、傾斜攝影等全新一代測繪信息技術方法的發展,可以迅速搜集制作精細化的城市三維模型,搭建城市地理信息基礎服務架構。 近期都在重點關注的“智慧城市”究竟是什么,有什么重大作用,同時又面臨著什么難關&#xff0c…

短劇付費變現小程序源碼系統+開通會員+在線充值 附帶完整的搭建教程

大家好啊,今天小編來給大家分享一款短劇付費變現小程序源碼系統。近年來,隨著互聯網技術的飛速發展,短劇成為了一個備受矚目的領域。短劇以其簡潔、緊湊的故事情節和制作周期短、傳播速度快的特點,成為了越來越多人的選擇。然而&a…

小紅書達人類型特點有哪些,創作形式總結!

小紅書自帶的社交電商屬性,吸引了眾多優秀的內容創作者和品牌達人。他們以不同的風格和主題,贏得了粉絲們的喜愛和關注。今天為大家分享下小紅書達人類型特點有哪些,創作形式總結! 1. 內容創作風格 我們從內容上來區分小紅書達人類…

微信小程序開發學習——小程序基本架構

1.創建一個包含:首頁、咨詢、關于我們 3個標簽的小程序,每個標簽都有對應的頁面、圖標和標簽文字。 知識點:app.json文件對小程序進行全局配置,同名.json文件對本窗口進行配置 app.json屬性: pages用于指定小程序由哪…

設計模式之建造者(Builder)模式

目錄 1、什么是建造者Builder模式? 2、建造者Builder模式的利與弊 3、建造者Builder模式的應用場景 4、建造者模式中的指導者(Director)有什么作用? 5、建造者Builder模式與其他模式的關系 小結 1、什么是建造者Builder模式…

百分點科技入選《2023年央國企數字化升級研究報告》

近日,艾瑞咨詢發布了《2023年央國企數字化升級研究報告》,報告總結了央國企數字化升級的方向和特點,并重點研究了基礎平臺及關鍵技術工具、通用及綜合型應用、重要配套建設等方面。報告指出,數據治理是央國企數字化升級過程中的重…

【鴻蒙應用ArkTS開發系列】- 云開發入門實戰二 實現省市地區三級聯動地址選擇器組件(上)

目錄 概述 云數據庫開發 一、創建云數據庫的對象類型。 二、預置數據(為對象類型添加數據條目)。 三、部署云數據庫 云函數實現業務邏輯 一、創建云函數 二、云函數目錄講解 三、創建resources目錄 四、獲取云端憑據 五、導出之前創建的元數據…

HTML新手入門筆記整理:特殊符號

音標符 音標符 字符 Construct 輸出結果 ?、 a a a? ?′ a a a?n ? a a a? ?&#xff5e; a a a? ??、 O O O? ??′ O O O? ? O O O? ?&#xff5e; O O O? 字符 顯示結果 描述 實體名稱 實體編號 空格 <…

【數據結構】F : 道路建設 (Ver. I)

F : 道路建設 (Ver. I) Description 有N個村莊&#xff0c;編號從1到N&#xff0c;你應該建造一些道路&#xff0c;使每個村莊都可以相互連接。 兩個村A和B是相連的&#xff0c;當且僅當A和B之間有一條道路&#xff0c;或者存在一個村C使得在A和C之間有一條道路&#xff0c;并…

編程實例,隨機抽獎編程

編程實例&#xff0c;隨機抽獎編程 操作步驟&#xff1a; 1、將在本店消費的會員數據導入到抽獎池&#xff0c;可以設定最近多少天內的記錄。 2、點擊 開始隨機抽獎&#xff0c;軟件將從抽獎池隨機抽取9名&#xff0c;并不斷變化&#xff0c;每0.02秒重新隨機抽取9名顯示到屏…

Java 項目中常用注解匯總!! (自整理)

Spring框架的注解 PostMapping("/getDetails") post請求 映射到接口 RequestBody 用來接收HTTP請求體中參數 GetMapping("/getDetails") get請求 映射到接口 RequestParam 用來接收URL中的查詢參數 PutMappi…

7:kotlin 數組 (Arrays)

數組是一種數據結構&#xff0c;它保存固定數量的相同類型或其子類型的值。kotlin中最常見的數組類型是對象類型數組&#xff0c;數組由array類表示。 什么時候使用 當你在kotlin中有特殊的底層需求需要滿足時&#xff0c;可以使用數組。例如&#xff0c;如果你有超出常規應用…

關于js的find的基本用法

Array.prototype.find() 是 JavaScript 的一個數組方法&#xff0c;它被用來在數組中查找一個符合條件的元素。一旦找到第一個符合條件的元素, find() 會立即返回這個元素的值&#xff0c;否則返回 undefined。 以下是 find() 方法的基本語法&#xff1a; arr.find(callback(el…

?LeetCode解法匯總1410. HTML 實體解析器

目錄鏈接&#xff1a; 力扣編程題-解法匯總_分享記錄-CSDN博客 GitHub同步刷題項目&#xff1a; https://github.com/September26/java-algorithms 原題鏈接&#xff1a;力扣&#xff08;LeetCode&#xff09;官網 - 全球極客摯愛的技術成長平臺 描述&#xff1a; 「HTML 實…

利用企業被執行人信息查詢API保障商業交易安全

前言 在當今競爭激烈的商業環境中&#xff0c;企業為了保障商業交易的安全性不斷尋求新的手段。隨著技術的發展&#xff0c;利用企業被執行人信息查詢API已經成為了一種強有力的工具&#xff0c;能夠幫助企業在商業交易中降低風險&#xff0c;提高合作的信任度。 企業被執行人…

如何使用 JavaScript 實現圖片上傳并轉換為 LaTeX 公式

在本教程中&#xff0c;我們將學習如何使用 JavaScript 創建一個上傳圖片的功能&#xff0c;并將所選圖片轉換為 LaTeX 公式。我們將使用 FileReader 對象來讀取圖片并將其轉換為 Base64 格式&#xff0c;然后利用 img2latex API 將其轉換為 LaTeX 公式。 1. HTML 結構 首先&…

SpringMVC日志追蹤筆記整理

新建logback-spring.xml <?xml version"1.0" encoding"UTF-8"?> <configuration><property name"PATH" value"./log/business"></property><appender name"STDOUT" class"ch.qos.logback…

linux進程調度(三)-進程終止

文章目錄 2.3 進程退出的幾種情況2.4 進程終止過程分析2.4.1 exit_notify函數2.4.1.1 forget_original_parent函數2.4.1.1.1 find_child_reaper函數2.4.1.1.2 find_new_reaper函數2.4.1.1.3 reparent_leader函數 2.4.1.2 do_notify_parent函數2.4.1.3 release_task函數 2.4.2 d…

GitHub桌面版

GitHub桌面版 一、GitHub 桌面版二、clone 倉庫三、更新倉庫 一、GitHub 桌面版 二、clone 倉庫 三、更新倉庫