《Head First設計模式》讀書筆記 —— 單例模式
《Head First設計模式》讀書筆記 相關代碼:Vks-Feng/HeadFirstDesignPatternNotes: Head First設計模式讀書筆記及相關代碼 用來創建獨一無二的,只能有一個實例的對象的入場券 為什麼需要單件模式 有些對象只能有一個實例 線程池、緩存、對話框、設備的驅動程序的對象、註冊表設置對象 如果製造出多個實例,就會導致許多問題產生
Nickname Vcats
Contributes22
Followers0
《Head First設計模式》讀書筆記 相關代碼:Vks-Feng/HeadFirstDesignPatternNotes: Head First設計模式讀書筆記及相關代碼 用來創建獨一無二的,只能有一個實例的對象的入場券 為什麼需要單件模式 有些對象只能有一個實例 線程池、緩存、對話框、設備的驅動程序的對象、註冊表設置對象 如果製造出多個實例,就會導致許多問題產生
Nickname Vcats
MVC和MVVM都是一種設計模式。 MVC MVC Model:模型,用於存儲業務數據; View:視圖,界面的展示; Controller:控制器,處理視圖與數據的交互。 MVC之間的關係: View展示數據依賴Model,View可以直接訪問Model; View更新數據通過Controller,Controller更新Model。 MVVM MVVM Model:模型,用於存儲業務
Nickname 要出家的鍵盤
Hello,大家好,我是V哥。很多文章都在介紹設計模式怎麼用,講解設計模式的原理等等,設計模式的思想是編程中的精髓,用好了可以讓代碼結構利於維護和擴展,同時代碼風格也更加優雅,V 哥也寫過這樣一篇文章,但很少有人從反模式的角度來講一講,過度濫用設計模式將給項目帶來災難。 設計模式反模式(Anti-Pattern)是指那些表面上看起來像是設計模式,但實際上會導致軟件設計問題的做法。這些做法可能會導致
Nickname 威哥愛編程
中介模式定義了一個單獨的(中介)對象,來封裝一組對象之間的交互。將這組對象之間的交互委派給與中介對象交互,來避免對象之間的直接交互。 在實際的項目中,程序由許多對象組成,對象間的交流錯綜複雜。 隨着應用程序的規模增大,對象越來愈多,他們之間的關係也越來複雜。對象間很容易出現相互引用而導致程序無法運行。同時開發者需要改變或者刪除某一個對象時候,需要查找並且改造所有引用到它的對象。這樣一來,改造的成
Nickname jump__jump
概述 日常生活中,我們出去吃飯都會遇到下面的場景。 定義: 將一個請求封裝為一個對象,使發出請求的責任和執行請求的責任分割開。這樣兩者之間通過命令對象進行溝通,這樣方便將命令對象進行存儲、傳遞、調用、增加與管理。 結構 命令模式包含以下主要角色: 抽象命令類(Command)角色: 定義命令的接口,聲明執行的方法。 具體命令(Concrete Command)角色:具體的命令,實現命令接口
Nickname 程序員Seven
概述 在現實生活中,常常會出現這樣的事例:一個請求有多個對象可以處理,但每個對象的處理條件或權限不同。例如,公司員工請假,可批假的領導有部門負責人、副總經理、總經理等,但每個領導能批准的天數不同,員工必須根據自己要請假的天數去找不同的領導簽名,也就是説員工必須記住每個領導的姓名、電話和地址等信息,這增加了難度。這樣的例子還有很多,如找領導出差報銷、生活中的“擊鼓傳花”遊戲等。 定義: 又名職責鏈模
Nickname 程序員Seven
概述 【例】通過按鈕來控制一個電梯的狀態,一個電梯有開門狀態,關門狀態,停止狀態,運行狀態。每一種狀態改變,都有可能要根據其他狀態來更新處理。例如,如果電梯門現在處於運行時狀態,就不能進行開門操作,而如果電梯門是停止狀態,就可以執行開門操作。 類圖如下: 代碼如下: public interface ILift { //電梯的4個狀態 //開門狀態 public fina
Nickname 程序員Seven
概述 定義:又被稱為發佈-訂閲(Publish/Subscribe)模式,它定義了一種一對多的依賴關係,讓多個觀察者對象同時監聽某一個主題對象。這個主題對象在狀態變化時,會通知所有的觀察者對象,使他們能夠自動更新自己。 結構 在觀察者模式中有如下角色: Subject:抽象主題(抽象被觀察者),抽象主題角色把所有觀察者對象保存在一個集合裏,每個主題都可以有任意數量的觀察者,抽象主題提供一個接口
Nickname 程序員Seven
概述 一般來説,同事類之間的關係是比較複雜的,多個同事類之間互相關聯時,他們之間的關係會呈現為複雜的網狀結構,這是一種過度耦合的架構,即不利於類的複用,也不穩定。例如在下左圖中,有六個同事類對象,假如對象1發生變化,那麼將會有4個對象受到影響。如果對象2發生變化,那麼將會有5個對象受到影響。也就是説,同事類之間直接關聯的設計是不好的。 如果引入中介者模式,那麼同事類之間的關係將變為星型結構,從下右
Nickname 程序員Seven
概述 定義:提供一個對象來順序訪問聚合對象中的一系列數據,而不暴露聚合對象的內部表示。 結構 迭代器模式主要包含以下角色: 抽象聚合(Aggregate)角色:定義存儲、添加、刪除聚合元素以及創建迭代器對象的接口。 具體聚合(ConcreteAggregate)角色:實現抽象聚合類,返回一個具體迭代器的實例。 抽象迭代器(Iterator)角色:定義訪問和遍歷聚合元素的接口,通常包含 ha
Nickname 程序員Seven
概述 定義:封裝一些作用於某種數據結構中的各元素的操作(將數據結構於元素進行分離),它可以在不改變這個數據結構的前提下定義作用於這些元素的新的操作。 結構 訪問者模式包含以下主要角色: 抽象訪問者(Visitor)角色:定義了對每一個元素(Element)訪問的行為,它的參數就是可以訪問的元素,它的方法個數理論上來講與元素類個數(Element的實現類個數)是一樣的,從這點不難看出,訪問者模式
Nickname 程序員Seven
概述 備忘錄模式提供了一種狀態恢復的實現機制,使得用户可以方便地回到一個特定的歷史步驟,當新的狀態無效或者存在問題時,可以使用暫時存儲起來的備忘錄將狀態復原,很多軟件都提供了撤銷(Undo)操作,如 Word、記事本、Photoshop、IDEA等軟件在編輯時按 Ctrl+Z 組合鍵時能撤銷當前操作,使文檔恢復到之前的狀態;還有在瀏覽器中的後退鍵、數據庫事務管理中的回滾操作、玩遊戲時的中間結果存檔
Nickname 程序員Seven
概述 如上圖,設計一個軟件用來進行加減計算。我們第一想法就是使用工具類,提供對應的加法和減法的工具方法。 //用於兩個整數相加 public static int add(int a,int b){ return a + b; } //用於兩個整數相加 public static int add(int a,int b,int c){ return a + b + c; }
Nickname 程序員Seven
認識微服務 隨着互聯網行業的發展,對服務的要求也越來越高,服務架構也從單體架構逐漸演變為現在流行的微服務架構。這些架構之間有怎樣的差別呢? 單體架構 單體架構:將業務的所有功能集中在一個項目中開發,打成一個包部署。 單體架構的優缺點如下: 優點: 架構簡單 部署成本低 缺點: 耦合度高(維護困難、升級困難) 分佈式架構 分佈式架構:根據業務功能對系統做拆分,每個業務功能模塊作為獨立
Nickname 程序員Seven
一、模式定義 裝飾者模式屬於結構型設計模式,允許通過動態包裝對象的方式為對象添加新功能,提供比繼承更靈活的擴展方式。該模式通過組合替代繼承,遵循開閉原則(對擴展開放,對修改關閉)。 二、核心角色 Component(組件接口) 定義被裝飾對象的公共接口 ConcreteComponent(具體組件) 實現基礎功能的具體類 Dec
Nickname 打盹的猴子
一、模式定義 策略模式屬於行為型設計模式,通過定義算法族並將其封裝為獨立的策略類,使得算法可以動態切換且與使用它的客户端解耦。該模式通過組合替代繼承,符合開閉原則(對擴展開放,對修改關閉)。 二、核心角色 Strategy(策略接口) 定義所有支持的算法的公共接口 ConcreteStrategy(具體策略) 實現策略接口的具體算法
Nickname 打盹的猴子
一、設計模式的來源 設計模式(Design Pattern)是前輩們對代碼開發經驗的總結,是解決特定問題的一系列套路。它不是語法規定,而是一套用來提高代碼可複用性、可維護性、可讀性、穩健性以及安全性的解決方案。 1995 年,GoF(Gang of Four,四人組/四人幫)合作出版了《設計模式:可複用面向對象軟件的基礎》一書,共收錄了 23 種設計模式,從此樹立了軟件設計模式領域的里程碑,人稱
Nickname 聽風
「Java學習 + 面試指南」:javaguide.cn(一份涵蓋大部分 Java 程序員所需要掌握的核心知識)這篇文章我會總結一些實用的有助於提高代碼質量的建議,內容較多,建議收藏!內容概覽: 提取通用處理邏輯註解、反射和動態代理是 Java 語言中的利器,使用得當的話,可以大大簡化代碼編寫,並提高代碼的可讀性、可維護性和可擴展性。我們可以利用註解 + 反射和註解+動態代理來提取類
Nickname kuailedehuanggua
你是否曾經遇到過系統因創建大量重複對象而導致內存佔用激增的情況?在處理成千上萬個文本字符、UI 控件或遊戲中的粒子效果時,如果為每個實例分配獨立內存,很快就會耗盡系統資源。這時,享元模式就像是 Java 開發中的"內存省錢法",它能讓你在不犧牲功能的前提下大幅降低內存消耗。 什麼是享元模式? 享元模式(Flyweight Pattern)是一種結構型設計模式,核心思想是共享細粒度對象,減少內存使用
Nickname 異常君
簡介 PHP 設計模式是對軟件開發中常見問題的可複用解決方案,通過標準化的結構提升代碼的可維護性、擴展性和複用性。 創建型模式(對象創建) 關注對象的創建過程,解決 “如何靈活、安全地生成對象” 的問題。 單例模式(Singleton) 意圖:確保一個類僅有一個實例,並提供全局訪問點。 適用場景:全局配置、數據庫連接池、日誌管理器(需共享狀態)。 實現要點: 私有構造函數(禁止外部實例化
Nickname 唐青楓
今天為大家帶來的是併發設計模式實戰系列,第十五章Future/Promise,廢話不多説直接開始~ 一、核心原理深度拆解 1. 異步計算雙階段模型 ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ Task │───│ Future │───│ Callback │ │ Submission │───│
Nickname 善良的匕首_ccWZFD
從字面到本質,用最直白的方式理解依賴倒置原則(Dependency Inversion Principle, DIP): 一、字面拆解:四個字的含義 依賴: 指代碼中模塊/類之間的使用關係(如A類調用B類的方法) 例如:Service依賴Repository讀寫數據 倒置: 把傳統的依賴方向"反轉"過來 類比:
Nickname 自由自在像小鳥
結構型模式聚焦於對象間的組合關係,通過優化類與對象的裝配方式,實現系統的靈活性與可擴展性。在分佈式系統中,由於多節點協作、跨網絡通信及異構環境集成等特性,傳統結構型模式需進行適應性改造,以應對分佈式特有的複雜性(如網絡延遲、節點故障、協議異構)。本文系統解析適配器、橋接、組合、裝飾器、外觀、享元、代理七大結構型模式在分佈式場景下的演化與實踐。 一、適配器模式:異構系統的橋樑 1.1 模式核心與分佈
Nickname 晴空月明
行為型模式聚焦於對象間的行為交互,通過規範對象協作方式提升系統的靈活性與可擴展性。在分佈式系統中,由於多節點異步通信、網絡不可靠性及狀態一致性挑戰,行為型模式需針對分佈式特性進行適應性設計。本文從觀察者、策略、命令、責任鏈、狀態五大核心行為型模式出發,系統解析其在分佈式場景下的演化與實踐。 一、觀察者模式:分佈式事件的發佈 - 訂閲機制 1.1 模式核心與分佈式適配 觀察者模式通過發佈 - 訂閲機
Nickname 晴空月明