單例模式和工廠方法模式

2021-10-09 15:33:45 字數 1478 閱讀 9966

//單例模式

/** *餓漢式的單例模式

* 程式初始化時就建立好了

* @author luthor21

*/class

singletone

public

static singletone getinstance()

}/**

*懶漢式的單例模式

* 在使用到的時候才會建立例項

* @author luthor21

*/class

singletonl

public

static singletonl getinstance()

return s;}}

/** * 多執行緒環境下的懶漢式單例模式(dcl,雙檢鎖+volatile實現)

* 加入了volatile變數來禁止指令重排序

* @author luthor21

*/class

singleton

public

static singleton getinstance()

}}return s;}}

//單例模式的優點:單例模式保證了乙個類在乙個系統中有且只有乙個物件例項,減少了系統記憶體和效能的開銷。

////單例模式的使用場景:建立乙個物件需要消耗太多的資源或者在乙個系統中不適合建立多個物件例項的情況下,我們可以採用單例模式設計實現。

//工廠方法模式

//工廠方法模式定義了乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法模式使乙個類的例項化延遲到其子類。

public

class

factorymethodtest

}//定義抽象產品類

abstract

class

product

//抽象方法

public

abstract

void

method2()

;}//定義具體產品類

class

concreteproduct1

extends

product

}class

concreteproduct2

extends

product

}//定義抽象建立類

abstract

class

creator

// 定義具體的建立類,真正來建立所需的物件

class

concretecreator

extends

creator

catch

(instantiationexception e)

catch

(illegalacces***ception e)

catch (classnotfoundexception e)

return

(t) product;

}}

單例模式 工廠方法

構造器設定為private 意圖 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。主要解決 乙個全域性使用的類頻繁地建立與銷毀。何時使用 當您想控制例項數目,節省系統資源的時候。如何解決 判斷系統是否已經有這個單例,如果有則返回,如果沒有則建立。關鍵 建構函式是私有的。應用例項 優點 例子 ...

單例模式 工廠方法模式 抽象工廠模式

單例模式 public class person2 public static person2 getinstacne 靜態 內部類 外部類才能呼叫 靜態 隨著類的載入而產生 private static class personholder private person2 public stati...

設計模式學習總結一 單例模式和工廠方法模式

單例模式,即singleton 作用是保證類在執行期間只會被建立乙個例項。方法命名為 getinstance 需要注意的是 如果2個執行緒同時呼叫getinstance,會出現併發問題,所以要加上synchronized,例如 public static synchronized classa ge...