`
knight_black_bob
  • 浏览: 858051 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式 之 备忘录模式

阅读更多

 

下载 23种设计模式源码 :http://download.csdn.net/download/knight_black_bob/8936043

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


创建型模式,共五种:
工厂方法模式 抽象工厂模式 单例模式 建造者模式 原型模式

结构型模式,共七种:
适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 享元模式

行为型模式,共十一种:
策略模式 模板方法模式 观察者模式 迭代子模式 责任链模式 命令模式

备忘录模式 状态模式 访问者模式 中介者模式 解释器模式

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

 

 

 

package 设计模式.备忘录模式;

import java.io.Serializable;
import java.util.Map;
import java.util.Map.Entry;

/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年7月24日 下午2:08:04 
 * des:
 */
public class Originator implements Serializable{

	private int id;
	private String name;
	private Map<String,String> map;
	private CLAZZ clazz;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Map<String, String> getMap() {
		return map;
	}
	public void setMap(Map<String, String> map) {
		this.map = map;
	}
	public CLAZZ getClazz() {
		return clazz;
	}
	public void setClazz(CLAZZ clazz) {
		this.clazz = clazz;
	}
	
	public  Memento reStore(){
		return  new Memento(this.id ,this, clazz);
	}
	 
	public  void  setMemento(Memento m){
	   this.id = m.getId();
	   this.name = m.getName();
	   this.map = m.getMap();
	   this.clazz = m.getClazz();
	}
	
	public  void  showInfo(){
		StringBuffer sb= new StringBuffer();
		sb.append("{");
		sb.append("\"id\":").append(id).append(",");
		sb.append("\"name\":\"").append(name).append("\",");
		if (map !=null) {
			 for(String key : map.keySet()){
				 sb.append("\"").append(key).append("\":\"").append(map.get(key)).append("\",");
			 }
		}
		if (clazz != null) {
			sb.append("\"clazz\":\"").append(clazz).append("\",");
		}
		sb.deleteCharAt(sb.length()-1);
		sb.append("}");
		System.out.println(sb.toString());
	}
	
}

 

package 设计模式.备忘录模式;

import java.util.HashMap;
import java.util.Map;

/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年7月24日 下午2:07:36 
 * des:
 */
public class Memento {

	
	private int id;
	private String name;
	private Map<String,String> map;
	private CLAZZ clazz;
	
	public Memento(int id ,Originator o, CLAZZ clazz) { 
		this.id = id;
		this.name = o.getName();
		Map <String , String > tempMap = new HashMap <String ,String>();
		if(o.getMap() != null ){
			for ( String key: o.getMap().keySet()) {
				tempMap.put(key, o.getMap().get(key) );
			}
		}
		this.map = tempMap;
		this.clazz =   clazz.clone();
	}
	
	 
	public int getId() {
		return id;
	} 
	public String getName() {
		return name;
	} 
	public Map<String, String> getMap() {
		return map;
	}

	public CLAZZ getClazz() {
		return clazz;
	} 
	
	
	
}

 

package 设计模式.备忘录模式;
/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年7月24日 下午2:12:31 
 * des:
 */
public class CLAZZ implements Cloneable{

	private int id;
	private String name; 
	public CLAZZ(int id, String name) { 
		this.id = id;
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	@Override
	protected CLAZZ clone()  { 
		try {
			return (CLAZZ)super.clone();
		} catch (CloneNotSupportedException e) { 
			e.printStackTrace();
		}
		return null;
	}
	
}

 

	package 设计模式.备忘录模式;
/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年7月24日 下午2:07:47 
 * des:
 */
public class Caretaker {
	 private Memento memento;   
	 
	 public Memento getMemento() {  
		 return memento;    
	 }
	 
	 public void setMemento(Memento memento) {   
		 this.memento = memento;   
	 }
}

 

package 设计模式.备忘录模式;

import java.util.HashMap;
import java.util.Map;

/**
 * @author baoyou  E-mail:curiousby@163.com
 * @version 创建时间:2015年7月24日 上午11:29:41 
 * des:
 */
public class MementoTest {
	
	public static void main(String[] args) {
		
		Originator org = new Originator();
		org.setId(1);
		org.setName("baoyou");
		Map <String ,String> map = new HashMap <String ,String>();
		map.put("数学", "90");
		map.put("语文", "90");
		map.put("英语", "90");
		org.setMap(map);
		org.setClazz(new CLAZZ(1, "一年级"));
		org.showInfo();
		
		Caretaker ctk = new Caretaker();       
		ctk.setMemento(org.reStore());
		
		map.put("数学", "92");
		org.setMap(map);
		org.showInfo();
		
		org.setMemento(ctk.getMemento());
		org.showInfo();
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

  • 大小: 6.6 KB
分享到:
评论

相关推荐

    设计模式之备忘录模式

    备忘录模式(Memento Pattern)是软件设计模式中的一种,属于行为模式。它提供了一种方式来恢复对象到之前的状态,即“撤销”操作。备忘录模式的核心思想是保存对象的内部状态,以便在需要时能恢复到这个状态,而...

    设计模式之备忘录模式(Memento Pattern)

    备忘录模式(Memento Pattern)是软件设计模式中的一种行为模式,它的主要目的是在不破坏对象封装性的前提下,允许对象在特定时刻保存其内部状态,并能够在之后恢复到保存时的状态。这种模式广泛应用于撤销/重做功能...

    设计模式之备忘录模式,内含可运行代码及详细解释

    备忘录模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在需要保护对象内部状态不被外部篡改的场景下。备忘录模式的核心思想是提供一种方法来捕获一个对象的内部状态,并在该对象之外保存这个状态...

    设计模式之备忘录模式的Java版本实现

    备忘录模式是一种在软件设计中广泛使用的结构型设计模式,它的主要目的是为了保存对象的状态,以便在需要的时候能够恢复到之前的状态。备忘录模式的核心思想是通过创建一个备忘录对象来存储原对象的状态,这个备忘录...

    设计模式之备忘录模式(Memento)

    备忘录模式(Memento Pattern)是设计模式中的一种行为模式,主要目的是在不违反封装原则的情况下,保存一个对象的内部状态,以便在需要时能够恢复到先前的状态。这种模式通常用于实现撤销/重做功能或者在游戏中保存...

    java设计模式之备忘录模式

    备忘录模式是一种在软件设计中广泛使用的结构型设计模式,它主要用来安全地保存对象的状态,以便在需要时能够恢复到先前的状态。在Java中,备忘录模式的应用可以帮助我们处理复杂业务逻辑中的撤销与重做操作,提高...

    23种设计模式之备忘录模式

    备忘录模式是一种行为设计模式,它允许在不破坏对象封装性的前提下,保存和恢复对象的状态。在软件开发中,这种模式常用于实现撤销/重做功能或者在需要保存临时状态的情况下。以下是对备忘录模式的详细解释: 1. **...

    设计模式之备忘录(memento)

    备忘录模式主要涉及三个角色: 1. **发起人(Originator)**:需要保存其内部状态的对象。它创建并存储备忘录,也可以从备忘录恢复状态。 2. **备忘录(Memento)**:存储发起人的内部状态。备忘录是发起人的私有...

    实例讲解JAVA设计模式之备忘录模式

    Java 设计模式之备忘录模式是 Java 设计模式中的一种重要模式,主要用于保存和恢复对象的内部状态。在游戏开发中,备忘录模式可以用于保存游戏角色的状态,例如生命力、攻击力、防御力等数据,以便在游戏过程中恢复...

    Python设计模式之备忘录模式原理与用法详解

    本文实例讲述了Python设计模式之备忘录模式原理与用法。分享给大家供大家参考,具体如下: 备忘录模式(Memento Pattern):不破坏封装性的前提下捕获一个对象的内部状态,并在该对象之外保存这个状态,这样已经后就可将...

    设计模式-备忘录模式(讲解及其实现代码)

    备忘录模式是一种在软件工程中广泛使用的面向对象设计模式,它主要用来安全地保存对象的状态,以便在需要时能够恢复到先前的状态。备忘录模式的核心思想是封装对象的状态,将其保存到一个独立的对象(备忘录)中,而...

    java设计模式-备忘录模式源代码

    备忘录模式是一种在软件工程中广泛使用的面向对象设计模式,它主要用来安全地保存对象的状态,以便在需要时能够恢复到先前的状态。这个模式的名字来源于我们日常生活中使用的备忘录,它记录了一些重要的信息,当需要...

    Android编程设计模式之备忘录模式详解

    Android 编程设计模式之备忘录模式详解 备忘录模式是一种行为模式,该模式用于保存对象当前状态,并且在之后可以再次恢复到此状态,这有点像我们平时说的”后悔药“。在 Android 编程设计模式中,备忘录模式的主要...

    Java设计模式-备忘录

    **Java设计模式——备忘录模式详解** 备忘录模式是一种行为设计模式,它允许对象在不破坏封装性的前提下捕获并存储其内部状态,以便稍后恢复到该状态。这种模式常用于在游戏中保存进度、撤销/重做操作、以及在复杂...

    设计模式-备忘录

    备忘录模式是一种常用的设计模式,它在软件工程中用于保存对象的状态,以便在需要时恢复到之前的状态。这种模式的主要目标是实现数据的安全存储,同时保持对象的封装性,避免对外部对象直接访问其内部状态。在iOS...

    设计模式_备忘录模式.zip

    备忘录模式是一种在软件工程中广泛使用的结构型设计模式,其主要目的是为了在不破坏封装性的前提下,能够安全地保存对象的状态,并在需要时恢复到先前保存的状态。这种模式通常用于那些需要记录和回滚操作的重要场景...

    备忘录模式.rar备忘录模式.rarjava设计模式

    备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将对象恢复到原先保存的状态。这种模式常用于需要记录用户操作历史或者游戏进度...

    C++设计模式之备忘录模式(Memento)

    C++设计模式之备忘录模式(Memento) 备忘录模式(Memento)是一种软件设计模式,它用于保存和恢复对象的内部状态。该模式的主要思想是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个...

    JAVA设计模式之备忘录模式原理与用法详解

    JAVA设计模式之备忘录模式原理与用法详解 备忘录模式是一种行为设计模式,它允许在不破坏封装性的前提下,获取到一个对象的内部状态,并在对象之外记录或保存这个状态。在有需要的时候可将该对象恢复到原先保存的...

Global site tag (gtag.js) - Google Analytics