Java常用設計模式的使用情境__Java

來源:互聯網
上載者:User
單例設計模式

單例設計模式就是保證一個類中,有且只有一個執行個體存在並提供一個訪問點供全域訪問,該執行個體可以被所有的程式來訪問。

一般在這種情況下用: 當要用一個類時,又要用該類中的一個執行個體; new 來建立執行個體時會給程式造成資源的浪費,而且執行個體越多也不好控制。 不同的線程調用時,可能會引起不同步的現象。

實際開發中用到單例模式的情況: 資料庫連接池 Windows的Task Manager(工作管理員),打不開第二個工作管理員 大部分的音樂播放器 網站的計數器 windows的Recycle Bin(資源回收筒)也是典型的單例應用。在整個系統運行過程中,資源回收筒一直維護著僅有的一個執行個體。 工廠設計模式

首先,Factory 方法模式是new一個對象的替代品,所以在所有需要產生對象的地方都可以使用,但是需要謹慎地考慮是否要增加一個工廠類進行管理,增加代碼的複雜度。其次,需要靈活的、可擴充的架構時,可以考慮採用Factory 方法模式。萬物皆對象,那萬物也就皆產品類,例如需要設計一個串連郵件伺服器的架構,有三種網路通訊協定可供選擇:POP3、IMAP、HTTP,我們就可以把這三種串連方法作為產品類,定義一個介面如IConnectMail,然後定義對郵件的操作方法,三個具體的產品類(也就是串連方式)進行不同的實現,再定義一個Factory 方法,按照不同的傳入條件,選擇不同的串連方式。如此設計,可以做到完美的擴充,如某些郵件伺服器提供了WebService介面,很好,我們只要增加一個產品類就可以了。再次,Factory 方法模式可以用在異構項目中,例如通過WebService與一個非Java的項目互動,雖然WebService號稱是可以做到異構系統的同構化,但是在實際的開發中,還是會碰到很多問題,如類型問題、WSDL檔案的支援問題,等等,從WSDL中產生的對象都認為是一個產品,然後由一個具體的工廠類進行管理,減少與外圍系統的耦合。最後,可以使用在測試驅動開發的架構下,例如,測試一個類A,就需要把與類A有關聯關係的類B也同時產生出來,我們可以使用Factory 方法模式把類B虛擬出來,避免類A與類B的耦合。目前由於JMock和EasyMock的誕生,該使用情境已經弱化了,讀者可以在遇到此種情況時直接考慮使用JMock或EasyMock。
代理設計模式

這裡有一個很厲害的類比。。我就不粘過來了 適配器模式 電源轉換器的類比 和尚的例子

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.