首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 程式設計入門

大道至簡:Java 23 種設計模式一點就通

     編輯:Java 程式設計入門

前言

設計模式是軟體開發中解決常見問題的經典方案,但許多開發者覺得它們抽象難懂。其實,每個模式都源自生活中的直觀經驗。本文用生活化的比喻,帶你輕鬆掌握 Java 23 種經典設計模式的核心精髓。

一、創建型模式

工廠模式 — 人才市場

過去需要什麼人才就得自己去招聘,效率低下;現在有了人才市場(工廠),我們只需直接去挑選合適的人才。工廠模式將物件的創建邏輯封裝起來,客戶端無需知道具體創建細節,只需告知需求即可獲得所需物件。

建造者模式 — 生產流水線

早期手工作坊式逐個組裝零件,效率低且易出錯;工業革命帶來流水線,先定義產品結構(如豐田汽車由輪胎、方向盤、引擎組成),再按標準生產各部件,最後組裝成品。建造者模式將複雜物件的建構過程分步驟進行,靈活應對不同配置需求。

原型模式 — 印刷術的發明

古時只能靠臨摹勉強模仿字跡;印刷術發明後,能完美複製原件。原型模式透過複製現有物件(克隆)來創建新物件,避免重新初始化的開銷,適合創建成本高昂的物件。

單例模式 — 唯一商標

過去商標濫用導致侵權糾紛;商標法確立後,確保同一商標僅由單一實體擁有。單例模式確保全域僅存在單一實例,並提供全域存取點,常用於資源管理器、日誌記錄器等場景。

二、結構型模式

適配器模式 — 集眾人之私,成一己之公

武當張三豐會太極拳,少林智空大師會金剛般若掌;若都拜為師,我便同時擁有兩門絕技。適配器模式將不相容的介面轉換為客戶期望的介面,讓原本不相容的類別能協同工作。

裝飾者模式 — 青出於藍而勝於藍

師父張三豐教我太極拳,我再自學蒙古摔跤,技藝超越師父。裝飾者模式在不改變原物件的前提下,動態地為物件添加新功能,比繼承更靈活。

橋接模式 — 白馬非馬

馬有黑白之分、公母之別;單說「這是馬」太抽象,「黑色公馬」又太死板。橋接模式將抽象部分(馬)與實作部分(顏色、性別)分離,使它們能獨立變化,動態組合出「黑色的公馬」或「白色的母馬」。

組合模式 — 大家族

子生孫、孫生子,子子孫孫無窮盡;將龐雜人口組織成按輩分排列的大家族樹狀結構。組合模式將物件組合成樹狀結構以表示「部分-整體」層次結構,讓客戶對單個物件和組合物件具有一致的處理方式。

外觀模式 — 求同存異

高中畢業需讀初中、高中;博士也需讀初中、高中。國家將初高中普及為九年義務教育,提供統一介面。外觀模式為子系統提供一個統一的高層介面,降低客戶端與子系統的耦合度。

享元模式 — 一勞永逸

熟練三千常用漢字,足以應對日常讀寫;大腦建立漢字庫,避免重複造字。享元模式透過共享技術有效支援大量細粒度物件,避免大量相似物件的記憶體浪費。

代理模式 — 垂簾聽政

清朝康熙年間四大輔政大臣代理朝政;皇帝不直接處理一切事務,而是透過大臣代理。代理模式為其他物件提供代理以控制對其的存取,適用於延遲載入、權限控制、日誌記錄等場景。

三、行為型模式

責任鏈模式 — 租房找房東

過去找房四處打聽效率低;現在有房屋仲介,向仲介提出需求,滿意則成交,不滿意繼續看下一間。責任鏈模式將請求的發送者與接收者解耦,請求沿著處理者鏈傳遞,直到被處理為止。

命令模式 — 借刀殺人

過去想殺誰就殺,後悟出長此以往結仇太多,改用借刀殺人。命令模式將請求封裝為物件,參數化其他物件,支援佇列、日誌、撤銷等操作,實現請求發送者與執行者解耦。

解釋器模式 — 文言文註釋

將一段文言文翻譯成白話文。解釋器模式定義語言文法並建立解釋器,用於解釋特定語言中的句子,適用於簡單語法的解析。

迭代器模式 — 趕盡殺絕

一個個搜尋,絕不放過任何一個。迭代器模式提供統一介面順序存取聚合物件內部元素,而不暴露內部結構。

中介者模式 — 三角債

原本錯綜複雜的債務關係,出現中介機構包辦一切,三角關係變成三方各自找中介。中介者模式用中介物件封裝物件間的交互,降低耦合度,將多對多關係轉為一對多。

備忘錄模式 — 有福同享

我有多少,你就有多少。備忘錄模式在不破壞封裝性前提下,捕獲物件內部狀態並在外部儲存,以便日後恢復狀態(如撤銷操作)。

觀察者模式 — 看管者

被監管對象一有異常,看管者立即反應。觀察者模式定義物件間一對多依賴,當一個物件狀態改變時,所有依賴者自動收到通知並更新。

狀態模式 — 進出自由

門可進可出,人多混亂不安全;設保安限制進出,秩序井然。狀態模式允許物件在內部狀態改變時改變其行為,將狀態相關行為封裝在獨立類別中。

策略模式 — 久病成良醫

生病症狀多樣,長期摸索總結出感冒、肺病、肝炎等類型。策略模式定義演算法族群,封裝各演算法並使其可互換,讓演算法變化獨立於使用它的客戶端。

模板方法模式 — 理論不一定要實踐

教練教學生游泳,教練自己不會也無妨。模板方法在父類別定義演算法骨架,將某些步驟延遲到子類別實現,子類別可不改變演算法結構即可重定義特定步驟。

訪問者模式 — 依法治罪

張三殺人該死刑,李四偷竊該罰款;制定法律明確各罪刑罰,誰犯罪按條例處罰。訪問者模式將作用於資料結構中的各元素操作分離出來,使在不改變資料結構前提下定義新操作。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved