《大话设计模式》学习笔记14:备忘录模式
2015-05-17 17:44
197 查看
游戏进度备忘示例:
1.Originator:
public class GameRole { public int Vitality { get; set; } public int Attack { get; set; } public int Defense { get; set; } //状态显示 public void StateDisplay() { Console.WriteLine("角色当前状态:体力 {0},攻击力 {1},防御力 {2}", Vitality, Attack, Defense); } //获得初始状态 public void GetInitState() { Vitality = 100; Attack = 100; Defense = 100; } //战斗 public void Fight() { Vitality = 0; Attack = 0; Defense = 0; } public RoleStateMemento SaveState() { return new RoleStateMemento(Vitality, Attack, Defense); } public void RecoveryState(RoleStateMemento roleStateMemento) { Vitality = roleStateMemento.Vitality; Attack = roleStateMemento.Attack; Defense = roleStateMemento.Defense; } }
2.Memento:
public class RoleStateMemento { public int Vitality { get; set; } public int Attack { get; set; } public int Defense { get; set; } public RoleStateMemento(int vitality,int attack,int defense) { Vitality = vitality; Attack = attack; Defense = defense; } }
3.Caretaker:
public class RoleStateCaretaker { public RoleStateMemento RoleStateMemento { get; set; } }
4.客户端代码:
class Program { static void Main(string[] args) { GameRole gameRole = new GameRole(); gameRole.GetInitState(); gameRole.StateDisplay(); RoleStateCaretaker roleStateCaretaker = new RoleStateCaretaker(); roleStateCaretaker.RoleStateMemento = gameRole.SaveState(); gameRole.Fight(); gameRole.StateDisplay(); gameRole.RecoveryState(roleStateCaretaker.RoleStateMemento); gameRole.StateDisplay(); } }
备忘录模式比较适用于功能比较复杂的,但需要维护或记录属性历史的类,或者需要保存的属性只是众多属性中的一小部分时,Originator可以根据保存的Memento信息还原到前一状态。
如果某个系统中使用命令模式时,需要实现命令的撤销功能,那么命令模式可以使用备忘录模式来存储可撤销操作的状态。
相关文章推荐
- 《Oracle编程艺术》学习笔记(14)-写一致性
- 《大话设计模式》学习笔记1:简单工厂模式
- 《大话设计模式》学习笔记13:适配器模式
- 设计模式_14:备忘录模式
- 《Java编程思想》学习笔记14——I/O高级
- 大话设计模式---备忘录模式
- 《Open CV3编程入门》学习笔记14
- 周志华《Machine Learning》学习笔记(14)--计算学习理论
- Chapter14:备忘录模式
- 《大话设计模式》学习笔记15:组合模式
- 《大话设计模式》学习笔记18:桥接模式
- 《Windows核心编程》学习笔记(14)– 堆
- 笔记-大话设计模式-14 观察者模式
- 《从零开始学Swift》学习笔记(Day 14)——字符串的插入、删除和替换
- 《大话设计模式》学习笔记16:迭代器模式
- 《大话设计模式》学习笔记19:命令模式
- 《大话设计模式》学习笔记25[完结]:模式总结
- 《从零开始学Swift》学习笔记(Day 14)——字符串的插入、删除和替换
- 大话设计模式(三)建造者模式 观察者模式 抽象工厂模式 状态模式 适配器模式 备忘录模式
- 【大话设计模式——学习笔记(1)】简单工厂模式