备忘录模式就是把保存的细节封装在Memento中。
应用场景:Memento模式比较适用于需要维护或记录属性历史的类。
主要缺点:角色状态需要完整的存储到备忘录对象中,如果状态数据很大很多,将会非常的消耗资源。
public class GameRole {
private String name;
private int vitality; // 生命力
private int attrack; // 攻击力
private int defence; // 防御力
public GameRole(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getVitality() {
return vitality;
}
public void setVitality(int vitality) {
this.vitality = vitality;
}
public int getAttrack() {
return attrack;
}
public void setAttrack(int attrack) {
this.attrack = attrack;
}
public int getDefence() {
return defence;
}
public void setDefence(int defence) {
this.defence = defence;
}
// 初始状态
public void init() {
this.vitality = 100;
this.attrack = 50;
this.defence = 30;
}
// 与boss大战后状态
public void Fight() {
this.vitality = 0;
this.attrack = 0;
this.defence = 0;
}
public void show(){
System.out.println("Name: "+name);
System.out.println("Vitality: "+this.vitality);
System.out.println("Attrack: "+this.attrack);
System.out.println("Defence: "+this.defence);
}
public Memento createMemento(){
return new Memento(this.vitality,this.attrack,this.defence);
}
public void backupFromMemento(Memento m){
this.vitality = m.getVitality();
this.attrack = m.getAttrack();
this.defence = m.getDefence();
}
}
public class CareTaker {
private Memento memento;
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
public class Memento {
private int vitality;
private int attrack;
private int defence;
public int getVitality() {
return vitality;
}
public int getAttrack() {
return attrack;
}
public int getDefence() {
return defence;
}
public Memento() {
}
public Memento(int vit, int attrack, int defence) {
this.vitality = vit;
this.attrack = attrack;
this.defence = defence;
}
}
public class MomentoMain {
public static void main(String[] args) {
GameRole mario = new GameRole("Mario");
mario.init();
mario.show();
CareTaker ct = new CareTaker();
ct.setMemento(mario.createMemento());
mario.Fight();
mario.show();
mario.backupFromMemento(ct.getMemento());
mario.show();
}
}
分享到:
相关推荐
Android之大话设计模式——:抽象工厂模式借鉴.pdf
Android之大话设计模式——:抽象工厂模式参考.pdf
大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf大话设计模式总结.pdf
设计模式之《大话设计模式》.pptx
设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为...
本文实例讲述了Python设计模式之备忘录模式原理与用法。分享给大家供大家参考,具体如下: 备忘录模式(Memento Pattern):不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,这样已经后就可将...
《大话设计模式》C++实现-design-patterns-cpp
大话设计模式 完整设计模式介绍
读书笔记:大话设计模式C++
android之大话设计模式.pdf
《大话设计模式》对各种设计模式,做简要归纳(原创)
树懒自己整理的大话设计模式的修行笔记,对程序设计有很大的帮助,主要是以自己学习的习惯整理的!
读书笔记:设计模式大话设计模式
android之大话设计模式整理.pdf
大话设计模式之外观模式 经典代码 C#类
单例模式是软件设计模式中的一种经典模式,它在许多场景下被广泛使用,尤其是在需要全局唯一实例的情况下。本文将深入探讨单例模式的概念、作用、实现方式以及其在实际编程中的应用。 单例模式的核心思想是确保一个...
大话设计模式源代码之简单工厂模式 经典代码
26种设计模式还包括其他如建造者模式、组合模式、享元模式、命令模式、模板方法模式、迭代器模式、访问者模式、备忘录模式、状态模式、解释器模式等,它们都有各自独特的作用和应用场景。掌握这些设计模式能够帮助...
读书笔记:设计模式学习《大话设计模式》
以上只是设计模式中的一部分,"大话模式源代码示例"涵盖的28个实例将覆盖更多的模式,如命令模式、职责链模式、状态模式、访问者模式等。通过这些源代码,我们可以深入理解每个模式的工作原理,学习如何在实际项目中...