您的位置:首页 > 编程语言 > C#

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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: