下载 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:[email protected]
* @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:[email protected]
* @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:[email protected]
* @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:[email protected]
* @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:[email protected]
* @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捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!