java常見的設(shè)計模式

1.單例模式

每個類只能創(chuàng)建一個實例對象

Java?Singleton模式主要作用是保證在Java應(yīng)用程序中,一個類Class只有一個實例存在。?使用Singleton的好處還在于可以節(jié)省內(nèi)存,因為它限制了實例的個數(shù),有利于Java垃圾回收(garbage?collection)。

好處:

第一、控制資源的使用,通過線程同步來控制資源的并發(fā)訪問;

第二、控制實例產(chǎn)生的數(shù)量,達(dá)到節(jié)約資源的目的。

第三、作為通信媒介使用,也就是數(shù)據(jù)共享,它可以在不建立直接關(guān)聯(lián)的條件下,讓多個不相關(guān)的兩個線程或者進(jìn)程之間實現(xiàn)通信。

應(yīng)用場景:在線統(tǒng)計人數(shù)

1


2


3

synchronized 關(guān)鍵字,代表這個方法加鎖,

相當(dāng)于不管哪一個線程A每次運行到這個方法時,

都要檢查有沒有其它正在用這個方法的線程B(或者C D等),

有的話要等正在使用這個方法的線程B(或者C D)運行完這個方法后再運行此線程A,

沒有的話,直接運行它包括兩種用法:synchronized 方法和 synchronized 塊。

2.工廠模式

優(yōu)點:

將創(chuàng)建實例的工作與使用實例的工作分開,使用者不必關(guān)心類對象如何創(chuàng)建,明確了職責(zé)。

把初始化實例時的工作放到工廠里進(jìn)行,使代碼更容易維護(hù)。 更符合面向?qū)ο蟮脑瓌t,面向接口編程,而不是面向?qū)崿F(xiàn)編程。

缺點:

由于工廠類集中了所有產(chǎn)品創(chuàng)建邏輯,一旦不能正常工作,整個系統(tǒng)都要受到影響。

要新增產(chǎn)品類的時候,就要修改工廠類的代碼,違反了開放封閉原則(對擴(kuò)展的開放,對修改的關(guān)閉)。

簡單工廠模式由于使用了靜態(tài)工廠方法,靜態(tài)方法不能被繼承和重寫,會造成工廠角色無法形成基于繼承的等級結(jié)構(gòu)。

發(fā)送接口


郵箱發(fā)送方法


短信發(fā)送方法


發(fā)送工廠類


發(fā)送實例

3觀察者模式

簡單地說,觀察者模式定義了一個一對多的依賴關(guān)系,讓一個或多個觀察者對象監(jiān)聽一個主題對象。這樣一來,當(dāng)被觀察者狀態(tài)發(fā)生改變時,需要通知相應(yīng)的觀察者,使這些觀察者對象能夠自動更新。例如:GUI中的事件處理機(jī)制采用的就是觀察者模式。

被觀察者接口


被觀察者類


觀察者接口


觀察者類


觀察者模式結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項A選項B選項C選項D選項E選項F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,586評論 0 13
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,816評論 11 349
  • Java多線程學(xué)習(xí) [-] 一擴(kuò)展javalangThread類 二實現(xiàn)javalangRunnable接口 三T...
    影馳閱讀 3,111評論 1 18
  • 本文主要講了java中多線程的使用方法、線程同步、線程數(shù)據(jù)傳遞、線程狀態(tài)及相應(yīng)的一些線程函數(shù)用法、概述等。 首先講...
    李欣陽閱讀 2,599評論 1 15
  • 該文章轉(zhuǎn)自:http://blog.csdn.net/evankaka/article/details/44153...
    加來依藍(lán)閱讀 7,470評論 3 87

友情鏈接更多精彩內(nèi)容