设计模式 之 备忘录模式

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

 

下载 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月前
|
设计模式 存储 Java
23种设计模式,备忘录模式的概念优缺点以及JAVA代码举例
【4月更文挑战第9天】备忘录模式是一种行为设计模式,它能在不破坏对象封装的前提下,捕获并保存对象的当前状态,以便后面可以恢复到这个状态。
87 0
|
6月前
|
设计模式 存储 Java
【设计模式】备忘录模式
【设计模式】备忘录模式
|
6月前
|
设计模式 存储 Java
浅谈设计模式 - 备忘录模式(十五)
浅谈设计模式 - 备忘录模式(十五)
47 0
|
6月前
|
设计模式 存储 Java
Java设计模式【十九】:备忘录模式
Java设计模式【十九】:备忘录模式
40 0
|
2月前
|
存储 设计模式 安全
Java设计模式-备忘录模式(23)
Java设计模式-备忘录模式(23)
|
3月前
|
设计模式 算法
设计模式的基础问题之备忘录模式在软件开发的问题如何解决
设计模式的基础问题之备忘录模式在软件开发的问题如何解决
|
5月前
|
设计模式
备忘录模式-大话设计模式
备忘录模式-大话设计模式
|
4月前
|
设计模式 数据处理
iLogtail设计模式问题之什么是备忘录模式
iLogtail设计模式问题之什么是备忘录模式
|
5月前
|
设计模式 存储 Java
Java设计模式之备忘录模式详解
Java设计模式之备忘录模式详解
|
6月前
|
存储 设计模式 安全
探索设计模式的魅力:备忘录模式揭秘-实现时光回溯、一键还原、后悔药、历史的守护者和穿越时空隧道
备忘录模式是一种行为设计模式,允许在不破坏对象封装性的情况下保存和恢复对象的内部状态。该模式通过创建备忘录对象来存储发起人的状态信息,发起人可根据需要创建和恢复备忘录。管理者则负责保存和管理备忘录,但无法访问其内容。备忘录模式简化了状态管理,支持撤销操作和历史记录功能,提高了系统的灵活性和可用性。在实际应用中,备忘录模式常用于文本编辑器、游戏和数据库事务处理等场景,确保对象状态的安全恢复和有效管理。通过备忘录模式,开发人员可以更好地控制对象状态的变化,提升软件系统的健壮性和用户体验。
131 1
探索设计模式的魅力:备忘录模式揭秘-实现时光回溯、一键还原、后悔药、历史的守护者和穿越时空隧道