首页
/
每日頭條
/
職場
/
史上最全的java設計模式
史上最全的java設計模式
更新时间:2025-07-12 11:43:08

  談談我工作中的23個設計模式

  創作不易,關注、點贊,分享,轉發,評論,收藏

  史上最全的java設計模式(談談我工作中的23個設計模式)(1)

  叙述

  從基礎的角度看,設計模式是研究類本身或者類與類之間的協作模式,是對抽象歸納的一個比較好的解決思路。在日常工作中,運用Java設計模式思路,可以更好地去思考理解這些設計模式。

  抽象工廠(Abstract Factory):多套方案 抽象工廠就是圍繞一個超級工廠創建其他工廠。這個超級工廠也被稱為其他工廠的工廠。抽象工廠模式屬于創造性模式,它提供了創建對象的最佳方式。在抽象工廠中,接口是負責創建相關對象的工廠,不需要顯式指定它們的類。每個生成的工廠都可以根據工廠模式提供對象。

  史上最全的java設計模式(談談我工作中的23個設計模式)(2)

  介紹

  意圖:提供一個創建一系列相關或相互依賴對象的接口方法,無需指定它們具體的類。

  主要解決:解決接口選擇的問題。

  何時使用:系統的産品有多于一個的産品族,而系統隻消費其中某一族的産品。

  如何解決:在一個産品族裡面,定義多個産品。

  關鍵代碼:在一個工廠裡聚合多個同類産品。

  在工作中,我們應該具備提供多套設計方案的能力,提供多種選擇性。需要有這樣的前瞻意識,擴展自己的思維方式。

  以下是抽象工廠概述圖

  史上最全的java設計模式(談談我工作中的23個設計模式)(3)

  生成器(Builder):善于分解 構建器,也稱為構建器模式,使用幾個簡單的對象逐步構建一個複雜的對象。構建器模式屬于創造性模式,它提供了創建對象的最佳方式。

  史上最全的java設計模式(談談我工作中的23個設計模式)(4)

  介紹

  意圖:将一個複雜的構建與其具體實現相分離,使得同樣的構建過程可以創建不同的表現形式。

  主要解決:主要解決在軟件系統中,有時候面臨着一個複雜對象的創建工作。

  何時使用:一些基本部件不會變,而其組合經常變化的時候。

  如何解決:将變與不變分離開。

  關鍵代碼:創建和提供實例,管理建造出來的實例的依賴關系。

  史上最全的java設計模式(談談我工作中的23個設計模式)(5)

  工廠方法(Factory Method):抽象思考 工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。工廠模式屬于創建型模式,它提供了一種創建對象的最佳方式。

  總的來說,在工廠模式中,我們創建對象的過程中,不會對客戶端暴露創建邏輯,通過使用共同的接口,來指向新創建的對象。

  工廠方法模式是将提供某一産品的過程進行抽象,通過接口的模式去規範出來。如果我們轉換思維,處理問題的思維邏輯,終究是發現事物的本質:

  到底在做什麼我們的職責是什麼提供什麼樣的價值。 史上最全的java設計模式(談談我工作中的23個設計模式)(6)

  原型(Prototype):傳承知識 原型模式(Prototype Pattern)是用于創建重複的對象,同時又能保證性能。這原型模式屬于創建型模式,它提供了一種創建對象的最佳方式。

  史上最全的java設計模式(談談我工作中的23個設計模式)(7)

  原型模式是實現了一個原型接口,該接口用于創建當前對象的克隆。原型模式是說,利用拷貝對象的方法,減少一些複雜的創建過程。

  史上最全的java設計模式(談談我工作中的23個設計模式)(8)

  單件(Singleton):專注 單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。單例模式屬于創建型模式,提供了一種創建對象的方式。單例模式,是一種常用的軟件設計模式。在它的核心結構中隻包含一個被稱為單例的特殊類。

  史上最全的java設計模式(談談我工作中的23個設計模式)(9)

  注意:

  1、單例類隻能有一個實例。2、單例類必須自己創建自己的唯一實例。3、單例類必須給所有其他對象提供這一實例。 介紹

  意圖:一個類僅有一個實例,具備全局訪問點。

  主要解決:全局使用的類頻繁進行創建與銷毀。

  何時使用:當節省系統資源。

  如何解決:判斷系統是否已經有這個單例,如果有則返回,如果沒有則創建。

  關鍵代碼:構造函數是私有的

  單件模式是說在多線程的情況下,要保證對象隻創建一遍,作為獨一無二的資源。

  史上最全的java設計模式(談談我工作中的23個設計模式)(10)

  單例模式的幾種實現方式

  單例模式的實現有多種方式,如下所示:

  1、懶漢式,線程不安全 是否 Lazy 初始化:

  是否多線程安全:

  實現難度:

  史上最全的java設計模式(談談我工作中的23個設計模式)(11)

  2、懶漢式,線程安全 是否 Lazy 初始化:

  是否多線程安全:

  實現難度:

  史上最全的java設計模式(談談我工作中的23個設計模式)(12)

  3、餓漢式 是否 Lazy 初始化:

  是否多線程安全:

  實現難度:

  史上最全的java設計模式(談談我工作中的23個設計模式)(13)

  4、雙檢鎖/雙重校驗鎖(DCL,即 double-checked locking) JDK 版本:JDK1.5 起

  是否 Lazy 初始化:

  是否多線程安全:

  實現難度:較複雜

  史上最全的java設計模式(談談我工作中的23個設計模式)(14)

  5、登記式/靜态内部類 是否 Lazy 初始化:

  是否多線程安全:

  實現難度:一般

  史上最全的java設計模式(談談我工作中的23個設計模式)(15)

  6、枚舉 JDK 版本:JDK1.5 起

  是否 Lazy 初始化:

  是否多線程安全:

  實現難度:

  史上最全的java設計模式(談談我工作中的23個設計模式)(16)

  适配器(Adapter):适應能力 适配器模式(Adapter Pattern)作為兩個不兼容的接口之間的橋梁。适配器模式屬于結構型模式。适配層往往不是提前的設計,而是基于現有現有的系統進行的妥協和适配。

  結構圖

  史上最全的java設計模式(談談我工作中的23個設計模式)(17)

  介紹

  意圖:将一個類的接口轉換成客戶希望的另外一個接口。

  主要解決:解決在軟件系統中,将一些現存的對象放到新的環境中,而新環境要求的接口是現對象不能滿足的應用場景。

  何時使用:

  1、系統需要使用現有的類,而此類的接口不符合系統的需要。

  2、通過接口轉換,将一個類插入另一個類系中。

  如何解決:繼承或依賴。

  關鍵代碼:适配器繼承或依賴已有的對象,實現想要的接口。

  總的來說,适配器是為了結合原來的能力,适配新的接口服務,比如适配不同的協議入口。

  史上最全的java設計模式(談談我工作中的23個設計模式)(18)

  橋接(Bridge):合理關系 橋接(Bridge)是用于把抽象化與實現化解耦,使得二者可以獨立變化。橋接設計模式屬于結構型模式.

  結構圖

  史上最全的java設計模式(談談我工作中的23個設計模式)(19)

  介紹

  意圖:将抽象與實現分離,都可以獨立的變化。

  主要解決:在有多種可變的情況下,用繼承會造成類擴展性不高,運用起來不靈活。

  何時使用:實現系統可能有多個角度分類,每一種角度都可能變化。

  如何解決:把這種多角度分類分離出來,讓它們獨立變化,減少它們之間耦合。

  關鍵代碼:抽象類依賴實現類。

  橋接模式是将原來相互依賴的部分,通過上層接口再往抽象層提一下,減少類之間的直接合作,形成間接關系。

  史上最全的java設計模式(談談我工作中的23個設計模式)(20)

  組合(Composite):遞歸思考 組合模式(Composite Pattern),又叫部分整體模式,是用于把一組相似的對象當作一個單一的對象。

  結構圖

  史上最全的java設計模式(談談我工作中的23個設計模式)(21)

  介紹

  意圖:使用戶對單個對象和組合對象的使用具有一緻性。

  主要解決:客戶程序可以處理複雜元素,從而使得客戶程序與複雜元素的内部結構解耦。

  何時使用:

  1、對象的部分-整體層次結構(樹形結構)。

  如何解決:樹枝和葉子實現統一接口,樹枝内部組合該接口。

  關鍵代碼:樹枝内部組合該接口,并且含有内部屬性 List,裡面放 Component。

  組合模式通過繼承和孩子節點,可以遞歸地去描述一個對象層次。

  史上最全的java設計模式(談談我工作中的23個設計模式)(22)

  ,

Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
發動機用不用補充機油(發動機不可缺少機油)
發動機用不用補充機油(發動機不可缺少機油)
  機油對于發動機來說就像血液一樣,非常重要!機油不僅僅是潤滑的功能,還有防腐防鏽,冷卻,密封,降低噪音,充當液壓油的功能!  首先機油是從加油口加入的,加油口在上端,機油一般都在下部油底殼内!氣缸蓋内部是有油道的,通過回油的油道流回油底殼,油底殼下面會有一個叫做機油泵的部件,這個部件一般是曲軸驅動,當發動機旋轉的時候驅動機油泵,開始泵油!  機油泵一般會有...
2025-07-12
到該發工資的時候沒發怎麼開口(發工資前不吃土)
到該發工資的時候沒發怎麼開口(發工資前不吃土)
  還有十五天才發工資飯飯已經兩袖清風窮到吐血      這幾天午飯連一點葷腥都沾不到飯飯的三層遊泳圈都要變成兩層了!      然而有什麼事難得到飯飯搜一搜發現咱大西安還就是福地如今這飛速上漲的物價隻用半張毛爺爺也能吃到好些個大餐而且個個都是好館子飯飯後面十五天就靠它們啦!!      滿園春餅店内是滿清風格的,小夥伴去吃的時候可以變裝玩,店内處處都是東北...
2025-07-12
世界上最貴的五種水果(世界上最貴的水果)
世界上最貴的五種水果(世界上最貴的水果)
  在愛旅行的人心裡   看遍世界就是夢想   而對于吃貨來說   嘗遍世間美味才是終極目标   哪怕是水果   也想要嘗個遍      作為一枚“吃貨”   下面的水果你吃過幾種呢   黑皮西瓜   這種皮黑、光滑的西瓜據說有種特殊的甜味,僅生長于北海道,年産僅100個。      其中最貴的一個重達17磅(約合7.7公斤),在2008年拍出6100美元(...
2025-07-12
我們應該如何應對職業倦怠(我的工作究竟有什麼意義)
我們應該如何應對職業倦怠(我的工作究竟有什麼意義)
  本文字數 2500/ 閱讀需要 7 min   文 | 梁娟(簡單心理認證·新手咨詢師)   “大半的人在二十歲或三十歲上就死了。一過這個年齡,他們隻變了自己的影子。以後的生命不過是用來模仿自己,把以前真正有人味兒的時代所說的,所做的,所想的,所喜歡的,一天天的重複,而且重複的方式越來越機械,越來越脫腔走闆。”   ——《約翰·克裡斯多夫》羅曼·羅蘭  ...
2025-07-12
張丹峰畢滢被曝深夜獨處三小時(張丹峰宣布畢滢辭職背後)
張丹峰畢滢被曝深夜獨處三小時(張丹峰宣布畢滢辭職背後)
  5月6日晚上,微博喜提了本月第一個“爆”熱點,張丹峰發文宣布畢滢辭職,并且把這段時間發生的所有事件向網友們具體交代了一下。         從張丹峰聲明來看,他全篇的口吻都比較委屈,稱自己這次被拍,是背後有人耍陰謀,他一定會追查清楚。      并且張丹峰還解釋了為何洪欣會删除微博,以及繼子張鎬濂為何會清空微博,他把這些歸結為巧合,稱和自己被拍這事并沒有...
2025-07-12
Copyright 2023-2025 - www.tftnews.com All Rights Reserved