23種設計模式總結(一)

整體來講分爲3類:安全

建立型:工廠方法模式、抽象工廠模式、單例、建造者、原型多線程

結構型:適配器、裝飾器、代理、外觀、橋接、組合、享元jvm

行爲型:策略、模板方法、觀察者、迭代子、責任鏈、命令、備忘錄、狀態、訪問者、中介者、解釋器函數

 

工廠方法模式和抽象工廠模式ui

要點:其實這兩種模式在我看來並沒有太大的不一樣,2個要點,對象不是new出來的(固然只是看起來不是new出來的),而是經過工廠類建立的,建立的是同一接口不一樣實現class的實例。那麼具體返回哪一個實現類的實例,要麼經過參數不一樣來區分,要麼經過方法不一樣來區分,要麼經過類不一樣來區分,反正總要分出來。線程

典型場景:須要常常性的建立同一類型的對象代理

難易程度:比較簡單對象

普遍程度:很是普遍接口

 

單例get

要點:保證一個類的實例,在一個jvm當中,只有一份,簡單的單例實現,包括一個私有的構造函數,一個靜態私有的類對象(instance),一個靜態共有的getInstance方法,可是這種方法在多線程環境下是不安全的,有可能這個instance對象會被實例化多份。能夠經過 synchronized  來保證線程安全,也能夠經過靜態內部類(內部類是延遲加載的,能夠保證在第一次用到的時候才實例化instance)持有這個instance來保證線程安全。

典型場景:某一個類的對象,系統當中只須要一份

難易程度:稍顯困難(考慮線程安全的狀況下)

普遍程度:很是普遍

 

Builder

其實,builder和factory是有其類似之處的,區別在於,factory模式當中,其實只有2類角色,工廠和產品。而在builder當中,包括了3個角色,指揮者、構造者、產品。用於建立較爲複雜的對象,同時清楚地體現其中的建立過程。

典型場景:對複雜對象的建立

難易程度:稍顯困難

普遍程度:比較普遍

 

原型

經過clone的方式,獲取對象。淺克隆:調用Object的clone方法,對於對象內部的對象,不會進行克隆;深克隆:能夠經過序列化的方式來實現,對於對象內部的對象,也會進行克隆。

典型場景:類似對象的建立

難易程度:深克隆的實現稍顯困難

普遍程度:不太普遍

相關文章
相關標籤/搜索