Mail發送機制中,需要對已經發送的消息做Log。同一時間内隻允許一個程序對Txt文檔進行操作,此時使用單例模式比較合适。結構如下圖所示
WriteMailLog(string message) 方法:紀錄Mail發送日志到檔案.
_helper 、_fileLock:程式運作時,建立2個靜态隻讀的程序輔助對象
1、類MailLog
public class EmailLog
{
private static object _helper = new object();
private static EmailLog _instance;
private static object _fileLock = new object();
private EmailLog()
{}
public static EmailLog GetInstance()
{
lock (_helper)
{
if (_instance == null)
{
_instance = new EmailLog();
}
}
return _instance;
}
/// <summary>
/// 發送Mail日志
/// </summary>
/// <param name="message">資訊</param>
public void WriteEmailLog(string message)
string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "mail.txt";
StreamWriter sw = null;
FileStream fs = null;
lock (_fileLock)
if (!File.Exists(filePath))
fs = System.IO.File.Create(filePath);
sw = new StreamWriter(fs, Encoding.UTF8);
sw.WriteLine("--------------------------------------------------------------------------");
sw.WriteLine(message);
sw.Flush();
sw.Close();
else
fs = new FileStream(filePath, FileMode.Append);
}
2、用戶端代碼
static void Main(string[] args)
EmailLog w1 = EmailLog.GetInstance();
w1.WriteEmailLog("發送Mail給靈動生活...");
EmailLog w2 = EmailLog.GetInstance();
w2.WriteEmailLog("發送Mail給James Hao...");
本文對單例模式(Singleton Pattern)的概念及其設計結構圖簡單地進行了描述,同樣也以一個Mail機制的LOG執行個體進行了說明。單例模式是比較常用。比較簡單的設計模式。
本文轉自 靈動生活 51CTO部落格,原文連結:http://blog.51cto.com/smartlife/264524,如需轉載請自行聯系原作者