使用性的單例模式,專案中應用
- 實現階段進階:
如果檢視書本上單例模式,簡單一句話,都是如何實現。
並且實現務必有 Class.GetInstance() 的語句。這種方式的缺點還一個就是程式碼的可讀性受影響; 原因區別於非單例的程式碼new Class();
並且對於庫的引用者的視角需要明白單例一說。
那麼如何解決這個問題呢?
封裝
(使用SingleInterface 封裝SingleTon)
public class SingleTon
{
private static int fieldNumber;
public int FieldNumber
{
get { return fieldNumber; }
set { fieldNumber = value; }
}
private SingleTon()
{
}
private static SingleTon instence;
public static SingleTon GetInstance()
{
if (instence == null)
{
instence = new SingleTon();
}
return instence;
}
public void MethodA()
{
Console.WriteLine("SingleTon :{0}", fieldNumber++);
}
}
public class SingleInterface
{
private SingleTon singleClent;
public SingleInterface()
{
}
public void Initialize()
{
singleClent = SingleTon.GetInstance();
}
public void MethodA()
{
singleClent.MethodA();
}
}
- 實用階段
如果不做處理 這種方式只能應用於,單程序中;
唯有將所有引用單例的庫或應用 只能執行與一個可執行檔案中。原因:作業系統給每個程序分配單獨的記憶體塊;
如果EXEa.exe和EXEb.exe 通過引用的方式載入單例庫,不能實現單例的作用。
解決辦法:
模式結合;結合SOA; 將單例獨立成服務。