大战熟女丰满人妻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常用設計模式有多少種”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為您服務。

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

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 黄色www网站 | 天天操天天玩 | 国内精品久久久久久影院8f | 日本高清一级做a爱过程免费视频 | 中文字暮文字暮 | 亚洲成人看片 | 全黄h全肉边做边吃奶在线观看 | 大尺度毛片 | 麻豆精品视频 在线视频 | 久久久久中文 | 99这里有精品视频 | 波多野一区二区三区在线 | 99久久99这里只有免费费精品 | 国产123区 | 欧美专区在线 | 久久精品66| 亚洲国产中文字幕在线观看 | 日日拍夜夜嗷嗷叫狠狠 | 精品久久久久中文字幕日本 | 国产精品久久久久久亚洲伦理 | 夜夜夜爽 | 久久久久夜夜夜精品国产 | 欧美一级全部免费视频 | 欧美性生活在线 | 欧美日韩永久久一区二区三区 | 亚洲a免费| 国产区91| 日韩a级片视频 | 国产大片在线播放 | se999se男人最爱 | 欧美在线观看一区二区三 | 国产成人精品免费影视大全 | 久久91精品国产一区二区 | 狠狠色欧美亚洲综合色黑a 狠狠色视频 | 一级肉体毛片视频免费看看 | 免费看片黄| 一级黄色片免费 | 免费观看黄a一级视频日本 免费观看黄色 | 九九热免费观看 | 国产精品伦理一区二区三区 | 亚洲精品一级一区二区三区 |