Net設計模式例項之備忘錄模式(Memento Pattern)(2)
四.例項分析(Example)
1、場景
首先定義銷售代理Noel van H<?XML:NAMESPACE PREFIX = ST1 />alen的相關資訊.然後儲存到備忘錄中,而定義銷售代理Leo Welch相關資訊。然後又回覆前一代理Noel van Halen的資訊。。結構如下圖所示<?XML:NAMESPACE PREFIX = O />
SalesProspect類:發起人
SaveMemento方法:建立備忘錄
RestoreMemento方法:回覆備忘錄
Memento類:備忘錄,需要備份的資訊有姓名、電話和預算
ProspectMemory類:負責儲存備忘錄Memento
2、程式碼
1、發起人類SalesProspect |
class SalesProspect
{
private string _name;
private string _phone;
private double _budget;
public string Name
{
get { return _name; }
set
{
_name = value;
Console.WriteLine("Name: " + _name);
}
}
public string Phone
{
get { return _phone; }
set
{
_phone = value;
Console.WriteLine("Phone: " + _phone);
}
}
public double Budget
{
get { return _budget; }
set
{
_budget = value;
Console.WriteLine("Budget: " + _budget);
}
}
public Memento SaveMemento()
{
Console.WriteLine("\nSaving state --\n");
return new Memento(_name, _phone, _budget);
}
public void RestoreMemento(Memento memento)
{
Console.WriteLine("\nRestoring state --\n");
this.Name = memento.Name;
this.Phone = memento.Phone;
this.Budget = memento.Budget;
}
} |
2、備忘錄類Memento |
class Memento
{
private string _name;
private string _phone;
private double _budget;
public Memento(string name, string phone, double budget)
{
this._name = name;
this._phone = phone;
this._budget = budget;
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public string Phone
{
get { return _phone; }
set { _phone = value; }
}
public double Budget
{
get { return _budget; }
set { _budget = value; }
}
} |
3、管理者類ProspectMemory |
class ProspectMemory
{
private Memento _memento;
// Property
public Memento Memento
{
set { _memento = value; }
get { return _memento; }
}
} |
3、客戶端程式碼 |
static void <?XML:NAMESPACE PREFIX = ST2 />Main(string[] args)
{
SalesProspect s = new SalesProspect();
s.Name = "Noel van Halen";
s.Phone = "(412) 256-0990";
s.Budget = 25000.0;
// Store internal state
ProspectMemory m = new ProspectMemory();
m.Memento = s.SaveMemento();
// Continue changing originator
s.Name = "Leo Welch";
s.Phone = "(310) 209-7111";
s.Budget = 1000000.0;
// Restore saved state
s.RestoreMemento(m.Memento);
Console.ReadKey();
} |
3、例項執行結果
<?XML:NAMESPACE PREFIX = V />
五、總結(Summary)
本文對備忘錄模式設計思想、結構和結構程式碼進行了分析,並以一例項進一步闡述了備忘錄模式的C#實現。
相關文章
- JAVA設計模式之 備忘錄模式【Memento Pattern】Java設計模式
- 設計模式 - 備忘錄模式 ( Memento )設計模式
- java設計模式-備忘錄模式(Memento)Java設計模式
- C#設計模式系列:備忘錄模式(Memento)C#設計模式
- 設計模式--備忘錄模式Memento(行為型)設計模式
- 備忘錄模式(Memento)模式
- Java備忘錄模式(Memento模式)Java模式
- Rust語言之GoF設計模式:備忘錄Memento模式RustGo設計模式
- 設計模式的征途—20.備忘錄(Memento)模式設計模式
- 設計模式之備忘錄模式設計模式
- Net設計模式例項之裝飾者模式(Decorator Pattern)設計模式
- 設計模式(Swift) - 2.單例模式、備忘錄模式和策略模式設計模式Swift單例
- 設計模式漫談之備忘錄模式設計模式
- 23種設計模式之備忘錄模式設計模式
- 設計模式----備忘錄模式設計模式
- 設計模式 - 備忘錄模式設計模式
- 折騰Java設計模式之備忘錄模式Java設計模式
- 19.java設計模式之備忘錄模式Java設計模式
- 設計模式(十九):備忘錄模式設計模式
- iOS設計模式之四:備忘錄模式和命令模式iOS設計模式
- 簡說設計模式——備忘錄模式設計模式
- 極簡設計模式-備忘錄模式設計模式
- GoLang設計模式11 - 備忘錄模式Golang設計模式
- Python設計模式-備忘錄模式Python設計模式
- 大話設計模式—備忘錄模式設計模式
- 設計模式:命令模式(Command Pattern)及例項設計模式
- 設計模式之單例模式(Singleton Pattern)設計模式單例
- Swift 中的設計模式 #2 觀察者模式與備忘錄模式Swift設計模式
- 我學設計模式 之 備忘模式設計模式
- Java設計模式之單例模式(Singleton Pattern)Java設計模式單例
- JAVA設計模式之 單例模式【Singleton Pattern】Java設計模式單例
- 深入淺出Java設計之備忘錄模式Java模式
- 設計模式 | 備忘錄模式及典型應用設計模式
- Java進階篇設計模式之十二 ---- 備忘錄模式和狀態模式Java設計模式
- 備忘錄設計模式知識概括設計模式
- Android備忘錄《單例模式》Android單例模式
- 行為型設計模式 - 備忘錄模式詳解設計模式
- 備忘錄模式模式