大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Java常用設計模式有多少種

Java常用設計模式有多少種

更新時間:2021-04-23 10:50:16 來源:動力節點 瀏覽1266次

設計模式的原則總結起來,就是多用接口/抽象類,從而增加代碼的可擴展性(減少修改代碼),降低模塊間的依賴和聯系,體現了OOP的模塊化、可擴展性等特征。

1.工廠模式

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

Java工廠模式中,我們在創建對象時不會對客戶端暴露創建邏輯,并且是通過使用一個共同的接口來指向新創建的對象。

意圖:定義一個創建對象的接口,讓其子類自己決定實例化哪一個工廠類,工廠模式使其創建過程延遲到子類進行。

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

何時使用:我們明確地計劃不同條件下創建不同實例時。

如何解決:讓其子類實現工廠接口,返回的也是一個抽象的產品。

關鍵代碼:創建過程在其子類執行。

應用實例:(1)您需要一輛汽車,可以直接從工廠里面提貨,而不用去管這輛汽車是怎么做出來的,以及這個汽車里面的具體實現。(2)Hibernate 換數據庫只需換方言和驅動就可以。

優點:(1)一個調用者想創建一個對象,只要知道其名稱就可以了。(2)擴展性高,如果想增加一個產品,只要擴展一個工廠類就可以。(3)屏蔽產品的具體實現,調用者只關心產品的接口。

缺點:每次增加一個產品時,都需要增加一個具體類和對象實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的復雜度,同時也增加了系統具體類的依賴。這并不是什么好事。

注意事項:作為一種創建類模式,在任何需要生成復雜對象的地方,都可以使用工廠方法模式。有一點需要注意的地方就是復雜對象適合使用工廠模式,而簡單對象,特別是只需要通過 new 就可以完成創建的對象,無需使用工廠模式。如果使用工廠模式,就需要引入一個工廠類,會增加系統的復雜度。

2.抽象工廠模式

抽象工廠模式(Abstract Factory Pattern)是圍繞一個超級工廠創建其他工廠。該超級工廠又稱為其他工廠的工廠。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。

在抽象工廠模式中,接口是負責創建一個相關對象的工廠,不需要顯式指定它們的類。每個生成的工廠都能按照工廠模式提供對象。

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

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

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

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

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

應用實例:工作了,為了參加一些聚會,肯定有兩套或多套衣服吧,比如說有商務裝(成套,一系列具體產品)、時尚裝(成套,一系列具體產品),甚至對于一個家庭來說,可能有商務女裝、商務男裝、時尚女裝、時尚男裝,這些也都是成套的,即一系列具體產品。假設一種情況(現實中是不存在的,要不然,沒法進入共產主義了,但有利于說明抽象工廠模式),在您的家中,某一個衣柜(具體工廠)只能存放某一種這樣的衣服(成套,一系列具體產品),每次拿這種成套的衣服時也自然要從這個衣柜中取出了。用 OO 的思想去理解,所有的衣柜(具體工廠)都是衣柜類的(抽象工廠)某一個,而每一件成套的衣服又包括具體的上衣(某一具體產品),褲子(某一具體產品),這些具體的上衣其實也都是上衣(抽象產品),具體的褲子也都是褲子(另一個抽象產品)。

優點:當一個產品族中的多個對象被設計成一起工作時,它能保證客戶端始終只使用同一個產品族中的對象。

缺點:產品族擴展非常困難,要增加一個系列的某一產品,既要在抽象的 Creator 里加代碼,又要在具體的里面加代碼。

使用場景:(1)QQ 換皮膚,一整套一起換。(2)生成不同操作系統的程序。

注意事項:產品族難擴展,產品等級易擴展。

3.單例模式

單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。這種類型的設計模式屬于創建型模式,它提供了一種創建對象的最佳方式。

這種Java單例模式涉及到一個單一的類,該類負責創建自己的對象,同時確保只有單個對象被創建。這個類提供了一種訪問其唯一的對象的方式,可以直接訪問,不需要實例化該類的對象。

注意:

(1)單例類只能有一個實例。

(2)單例類必須自己創建自己的唯一實例。

(3)單例類必須給所有其他對象提供這一實例。

主要解決:一個全局使用的類頻繁地創建與銷毀。

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

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

單例設計模式一般有幾種實現形式,餓漢式,飽漢式,雙重加鎖式。

應用:數據庫連接池。因為數據庫連接池是一種數據庫資源,使用數據庫連接池的主要是為了節省打開或者關閉數據庫連接所造成的效率損耗,這種效率上的損耗還是非常昂貴的,使用單例設計模式可以大大降低這種損耗。

多線程中線程池的設計一般也采用單例設計模式,這是由于線程池要方便對池中的線程進行控制。

網站中訪問計數器,一般也是采用單例設計模式實現的,否則難以同步。

4.代理模式

Java代理模式在Java中十分常見,主要用于業務邏輯的接口不希望被客戶端調用。有如Spring實現AOP而使用動態代理

定義:給某一個對象提供一個代理,并由代理對象控制對原對象的引用。

(1)靜態代理

靜態代理比較簡單,是由程序員編寫的代理類,并在程序運行前就編譯好的,而不是由程序動態產生代理類,這就是所謂的靜態。考慮這樣的場景,管理員在網站上執行操作,在生成操作結果的同時需要記錄操作日志,這是很常見的。

(2)動態代理

JDK動態代理:

1)定義一個事件管理器類實現invocationHandle接口,并重寫invoke(代理類,被代理的方法,方法的參數列表)方法。

2)實現被代理類及其實現的接口,

3)調用Proxy.newProxyInstance(類加載器,類實現的接口,事務處理器對象);生成一個代理實例。

4)通過該代理實例調用方法。

cglib動態代理:通過“繼承”可以繼承父類所有的公開方法,然后可以重寫這些方法,在重寫時對這些方法增強,這就是cglib的思想。

以上就是動力節點小編介紹的“Java常用設計模式有多少種”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 久草视频在线播放 | 青草草在线观看 | 精品国偷自产在线 | 亚洲精品日本一区二区在线 | 国产精品免费在线播放 | 久久精品国产免费观看99 | 久久精品一 | 99精品视频在线在线视频观看 | 性大交 | 99视频精品国在线视频艾草 | 四虎影视永久在线精品免费 | 在线播放国产精品 | 奇米888888 | 四虎网站1515hh四虎免费 | 干干干操操操 | 综合色桃花久久亚洲 | 中文字幕一区在线播放 | 精品一区二区久久久久久久网精 | 四虎影院视频 | 日本狠狠干 | 99看片| 毛片免费全部免费观看 | 天天做天天爱夜夜爽女人爽宅 | 日韩最新中文字幕 | 深夜免费看 | 黄色毛片视频 | 亚洲精品一区二区卡 | 伊人久热这里只有精品视频99 | 日日操日日爽 | a一级日本特黄aaa大片 | 国产精品国产自线拍手机观看 | 狠狠色婷婷丁香综合久久韩国 | 亚洲视频一区在线播放 | 日本最猛黑人xxxx猛交 | 久久精品国产精品亚洲精品 | 亚洲欧美另类在线视频 | 欧美www| 一级a俄罗斯毛片免费 | 天天干夜夜操视频 | 国产一区二区三区成人久久片 | 天天影视欧美综合在线观看 |