單件模式

單件模式(Singleton)是一個非常簡單的模式,這是我第一個理解並且能運用的模式。有時候模式的複雜程度並不在於本身,而是由於他的應用目的。最初的時候面對一個模式經常充滿了困惑,一個簡單的調用爲什麼要搞的如此複雜?爲什麼要建立這麼多類,只是爲了打開一個文件。

通常說來學習一個模式是一個接受、認可、領會的過程。接受:瞭解模式的結構,瞭解實例的意義;認可:認可該模式在實際工程中的作用和可行性;領會:將模式應用到開發過程中。

而模式的應用目的說到底無非是爲了降低模塊之間在時間和空間上的耦合程度,以此提高模塊的複用性,降低出錯的概率。

單件模式

Singleton模式是一個較爲簡單的模式,下面的代碼就可以建立一個Singlton模式的例子,這是一個寫系統日誌的類。

public class LogWriter

{

//申明一個靜態的變量,類型爲類本身

private static LogWriter _instance = null;

 

//將類的構造函數私有化,使得這個類不可以被外界創建

private LogWriter()

{

}

 

//提供靜態的方法,創建類的實例

public static LogWriter GetInstance()

{

if (_instance == null)

{

_instance = new LogWriter();

}

return _instance;

}

 

//下面實現類的其他功能

//....

}


調用者不可以通過new的形式得到Singleton的實例,調用的例子如下:

LogWriter log = LogWriter.GetInstance();

log.Debug("hello world");

 


實際應用

很容易想象,單件模式適用於下面的情況:整個系統中某個對象是唯一的,或者是有固定數量的。比如數據庫連接,配置文件,等等……

模式是一種程序員間的約定術語,語言可以成爲思維的基礎。有了這樣的語言,一些複雜的概念就變得容易交流了。比如設計人員只要說到,某個類是一個單件模式,是一個Singleton,程序員聽見以後就至少應該明白這個類的調用方式了,而不用再詳細的說明。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章