c#设计模式之备忘录模式
2017-06-30 21:19
274 查看
using System; using System.Collections.Generic; namespace Program { //联系人 public class ContactPerson { public string Name { get; set; } public string MobileNum { get; set; } } //备忘录 public class ContactMemento { //保存发起人的内部状态 public List<ContactPerson> contactPersonBack; public ContactMemento(List<ContactPerson> persons) { contactPersonBack = persons; } } //发起人 public class MobileOwner { //发起人需要保存的内部状态 public List<ContactPerson> ContactPersons { get; set; } public MobileOwner(List<ContactPerson> persons) { ContactPersons = persons; } //创建备忘录,将要保存的联系人列表导入到备忘录中 public ContactMemento CreateMemento() { return new ContactMemento(new List<ContactPerson>(this.ContactPersons)); } //将备忘录中的数据备份导入到联系人列表中 public void RestoreMemento(ContactMemento memento) { this.ContactPersons = memento.contactPersonBack; } public void show() { Console.WriteLine("{0}个人", ContactPersons.Count); foreach (ContactPerson p in ContactPersons) { Console.WriteLine("name:{0} number:{1} ", p.Name, p.MobileNum); } } } //管理角色 public class Caretaker { public ContactMemento ContactM { get; set; } } class Program { static void Main(string[] args) { List<ContactPerson> persons = new List<ContactPerson>() { new ContactPerson(){Name="a",MobileNum="01234"}, new ContactPerson(){Name="b",MobileNum="56789"}, new ContactPerson(){Name="c",MobileNum="98765"}, }; MobileOwner mobileOwner = new MobileOwner(persons); mobileOwner.show(); //创建备忘录并保存备忘录对象 Caretaker caretaker = new Caretaker(); caretaker.ContactM = mobileOwner.CreateMemento(); //移除最后一个联系人 mobileOwner.ContactPersons.RemoveAt(2); mobileOwner.show(); //恢复到初始状态 mobileOwner.RestoreMemento(caretaker.ContactM); mobileOwner.show(); Console.ReadKey(); } } }
相关文章推荐
- 《模式——工程化实现及扩展》(设计模式C# 版)《备忘录模式 Memento》——“自我检验" 参考答案
- [导入]C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式.zip(9.73 MB)
- C#设计模式之19——备忘录模式
- 《模式——工程化实现及扩展》(设计模式C# 版)《备忘录模式 Memento》——“自我检验"
- 201802262211->深入浅出设计模式:c#备忘录模式
- C#设计模式-备忘录模式
- 【C#设计模式-备忘录模式】
- C#设计模式(十八)备忘录模式
- C# 设计模式-备忘录(Menento)
- Swift设计模式之备忘录模式
- 设计模式:备忘录模式
- C# 单例设计模式
- [整理]C#面向对象设计模式纵横谈(2):Singleton单件(创建型模式)
- C#设计模式之工厂模式(1)
- C#设计模式之——结构型模式导引
- 设计模式 - 备忘录模式
- 剖析设计模式编程中C#对于组合模式的运用
- C#设计模式(13)-Proxy Pattern
- c#设计模式之单例模式
- 设计模式 - 线程安全的单例模式(C#)