常用的幾種設計模式(單例,工廠,模板等)

2021-10-10 02:15:27 字數 2272 閱讀 8191

1. 單例設計模式

單例設計模式主要分為:餓漢式 和 懶漢式,懶漢式需要對多執行緒進行同步處理。

public

class

singleton

// 3.提供公有的get方法負責將上述物件返回出去,使用public static關鍵字修飾

public

static

/*synchronized*/ singleton getinstance()

return sin;

}*/if(null == sin)}}

return sin;

}}

2. 工廠模式普通工廠方法模式就是建立乙個工廠類,對實現了同一介面的不同實現類進行例項的建立。

(1)類圖結構

主要缺點

在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,並且可能出現空指標異常。

多個工廠方法模式

(1)類圖結構

(2)主要缺點

在多個工廠方法模式中,為了能夠正確建立物件,先需要建立工廠類的物件才能呼叫工廠類中的生

產方法。

靜態工廠方法模式

(1)類圖結構

(2)實際意義

工廠方法模式適合:凡是出現了大量的產品需要建立且具有共同的介面時,可以通過工廠方法模式進行建立。

(3)主要缺點

工廠方法模式有乙個問題就是,類的建立依賴工廠類,也就是說,如果想要拓展程式生產新的產

品,就必須對工廠類的**進行修改,這就違背了開閉原則。

3.抽象工廠模式

(1)類圖結構

4.裝飾器模式

(1)基本概念

裝飾器模式就是給乙個物件動態的增加一些新功能,要求裝飾物件和被裝飾物件實現同乙個介面,

裝飾物件持有被裝飾物件的例項。

(2)類圖結構

(3)實際意義

可以實現乙個類功能的擴充套件。

可以動態的增加功能,而且還能動態撤銷(繼承不行)。

缺點:產生過多相似的物件,不易排錯。

5.**模式

(1)基本概念

**模式就是找乙個**類替原物件進行一些操作。

比如我們在租房子的時候找中介,再如我們打官司需要請律師,中介和律師在這裡就是我們的代

理。(2)類圖結構

(3)實際意義

如果在使用的時候需要對原有的方法進行改進,可以採用乙個**類呼叫原有方法,並且對產生的

結果進行控制,這種方式就是**模式。

使用**模式,可以將功能劃分的更加清晰,有助於後期維護。

(4)**模式和裝飾器模式的比較

裝飾器模式通常的做法是將原始物件作為乙個引數傳給裝飾者的構造器,而**模式通常在乙個代

理類中建立乙個被**類的物件。

裝飾器模式關注於在乙個物件上動態的新增方法,然而**模式關注於控制對物件的訪問。

6.模板方法模式

(1)基本概念

模板方法模式主要指乙個抽象類中封裝了乙個固定流程,流程中的具體步驟可以由不同子類進行不

同的實現,通過抽象類讓固定的流程產生不同的結果。

(2)類圖結構

(3)實際意義

將多個子類共有且邏輯基本相同的內容提取出來實現**復用。

不同的子類實現不同的效果形成多型,有助於後期維護。

幾種常用的單例模式

單例模式的定義 單例模式的特點 執行緒安全問題 實現單例模式的方法 餓漢式 public class single 提供公共靜態方法 public static single getsingle public class single1 提供公共靜態方法 public static single1 ...

設計模式 單例模式 工廠模式

1.單例設計模式 乙個類中只能有乙個物件 分為 懶漢單例模式和餓漢單例模式 懶漢單例模式 1.私有化構造器 2.宣告本類引用的型別,不要去指向物件 3.提供乙個公共靜態的方法,為外部提供物件,先判斷引用型別是否為物件,如果不是,則引用指 向乙個new 類名 並返回 如果有就返回這個引用 public...

設計模式(工廠模式,單例模式)

設計模式設計模式 gof gang of four 設計模式是指前人在長期的開發經驗中 總結出來的一套用於解決特定問題的套路 設計模式原則 1 工廠模式 示例 工廠模式思想 靜態工廠模式 author whd public abstract class carclass benz extends c...