欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

设计模式 之 备忘录模式

程序员文章站 2022-05-03 21:41:08
...

 

下载 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