首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

設計模式 (C#) 實戰:備忘錄模式 — 狀態保存與恢復完整範例 (下)

     編輯:關於C語言

承接前兩篇結構定義,本文展示客戶端測試代碼與運行結果,驗證「插入失敗 → 恢復狀態 → 更新時間 → 重試」完整流程。

測試代碼 (ASP.NET WebForm 頁面)


public partial class Memento : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        SqlMessage m = new SqlMessage();
        m.Message = "Message內容";
        m.PublishTime = DateTime.Now;

        MessageModelCaretaker mmc = new MessageModelCaretaker();
        mmc.MessageModel = m.SaveMemento(); // 備份初始狀態

        bool bln = false;
        while (!bln)
        {
            bln = m.Insert(new MessageModel(m.Message, m.PublishTime));
            Response.Write(m.Message + " " + m.PublishTime.ToString() + " " + bln.ToString() + "<br />");

            if (!bln)
            {
                System.Threading.Thread.Sleep(1000);
                m.RestoreMemento(mmc.MessageModel); // 失敗則恢復狀態
                m.PublishTime = DateTime.Now;       // 僅更新時間重試
            }
        }
    }
}

運行結果

Message內容 2007-5-23 21:32:13 False
Message內容 2007-5-23 21:32:14 False
Message內容 2007-5-23 21:32:15 True

第三秒秒數 15 可被 5 整除,Insert 回傳 true 結束迴圈。備忘錄模式完美實現「不破壞封裝下捕獲內部狀態、外部保存、隨時恢復」。

參考資源

DoFactory 備忘錄模式 C# 範例

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved