C#備忘錄形式(Memento Pattern)實例教程。本站提示廣大學習愛好者:(C#備忘錄形式(Memento Pattern)實例教程)文章只能為提供參考,不一定能成為您想要的結果。以下是C#備忘錄形式(Memento Pattern)實例教程正文
本文以一個簡略實例講述了C#備忘錄形式(Memento Pattern)的完成辦法。分享給年夜家供年夜家參考。詳細完成辦法以下:
簡略來講,備忘錄形式就是支撐回退操作。假定讓一個Notepad支撐回退操作,若何完成呢?
起首須要一個備忘錄類。
public class Memento { private string _msg; public Memento(string msg) { _msg = msg; } public string GetText() { return _msg; } }
上述代碼重要完成:
1. 結構函數在Nodepad每次記載信息的時刻挪用,Nodepad所記載的信息終究經由過程該結構函數賦值給了_msg字段。
2. GetText辦法在Nodepad履行回退操作的時刻挪用
接上去就是Nodepad類。
public class Notepad { private string _msg; public Memento SetMsg(string msg) { Memento m = new Memento(msg); _msg = msg; return m; } public string GetMsg() { return _msg; } public void Undo(Memento previousState) { if (previousState != null) { _msg = previousState.GetText(); } else { _msg = ""; } } }
上述代碼完成:
1. 保護著一個類型為string的字段_msg,代表顯示在Nodepad上的文字
2. 記載信息辦法SetMsg:不只要把記載的信息賦值給_msg,還要把信息傳遞給備忘錄類
3. 獲得信息辦法GetMsg:讀取_msg
4. 回退操作辦法Undo:把備忘錄的上一次信息賦值給_msg。假如回退到第一次之前的操作,相當於備忘錄為null,須要斟酌為null的情形
客戶端須要有一個備忘錄的列表,保護者一切的備忘錄信息。
class Program { static void Main(string[] args) { IList<Memento> undos = new List<Memento>(); Notepad notepad = new Notepad(); Memento undo; undo = notepad.SetMsg("Hello"); undos.Add(undo); undo = notepad.SetMsg("World"); undos.Add(undo); Console.WriteLine("進入Nodepad檢查信息"); Console.WriteLine(notepad.GetMsg()); Console.WriteLine("1、接著履行一個回退操作"); notepad.Undo(undos[0]); Console.WriteLine("回退操作今後檢查信息"); Console.WriteLine(notepad.GetMsg()); Console.WriteLine("2、再履行一個回退操作"); notepad.Undo(null); Console.WriteLine("回退操作今後再檢查信息"); Console.WriteLine(notepad.GetMsg()); Console.ReadKey(); } }
運轉成果以下圖所示:
經由過程上述運轉成果可見:
1. 第一次進入Notepad檢查信息看到的是最初一次輸出的World;
2. 回退一次,第二次進入Notepad檢查信息看到的是第一次輸出的Hello;
3. 再回退一次,第三次進入Notepad檢查信息看到的是空字符串。
信任本文所述對年夜家C#法式設計的進修有必定的自創價值。