新開一節設計模式的演示講解。
首先理解一下何為設計模式,設計模式是一些**開發規範,是在程式設計發展中不斷演化的一些優秀的**模板,通過設計模式,我們可以寫出高效優雅的**。
這節講單例模式,單例模式是比較簡單的一種設計模式,顧名思義,單例模式就是程式執行中只會物件例項化一次的設計模式。比如,設定視窗只能例項化一次,而不是點選一次設定按鈕就彈出乙個新的視窗。
先看乙個單例模式的**:
class單例模式就是設定類的構造方法為私有的,這樣就限制了外部對構造方法的訪問,通過乙個公共的getinstance() 方法,獲取返回例項。類的內部定義乙個該類的物件,getinstance()只會在第一次執行的時候調新建例項,後續的訪問都是返回最初建立的物件。tools
public
static
tools getinstance()
}
接下來看一下兩次建立例項的位址是否相等:
tools tools1 =tools.getinstance();執行結果為:tools tools2 =tools.getinstance();
console.writeline(tools1.equals(tools2));
兩個例項相等,這也就完成了單例模式。但是,以上的寫法不是執行緒安全的,當兩個執行緒同時訪問的時候,有可能同時監測到物件為null,從而同時執行例項化的
**,所以在多執行緒的環境下,要設定同步鎖(可以參見前文:執行緒安全)。
餓漢式和懶漢式:
上述單例模式**屬於懶漢式的**,它是要在第一次被呼叫時,才會將自己例項化。下面來看一下什麼是餓漢式:
class餓漢式使用靜態初始化的方式,在類被載入時就例項化,先於物件的呼叫,這種情況避免了執行緒安全的問題,但是會提前占用系統的資源。toolse
public
static
toolse getinstance()
}
至於這兩種單例用法,要看實際開發中的需求。
設計模式之單例模式
前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...
設計模式之單例模式
package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...
設計模式之 單例模式
單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...