구조 모드의 Memento 모드
11370 단어 비망록 모드
// :
public class Memento {
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
import java.io.Serializable;
// :
public class LongMemento implements Serializable {
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
// : 、
public class Caretaker {
private Memento memento;
private LongMemento longMemento;
private final String filePath = "LongMemento.txt";
public void save(LongMemento longMemento){
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream(filePath);
oos = new ObjectOutputStream(fos);
oos.writeObject(longMemento);
oos.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
oos.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public LongMemento read(){
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = new FileInputStream(filePath);
ois = new ObjectInputStream(fis);
longMemento = (LongMemento) ois.readObject();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
ois.close();
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return longMemento;
}
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
// :
public class Originator {
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public void setMemento(final Memento memento) {
num = memento.getNum();
}
public Memento createMemento() {
final Memento memento = new Memento();
memento.setNum(num);
return memento;
}
public void setLongMemento(final LongMemento memento) {
num = memento.getNum();
}
public LongMemento createLongMemento() {
final LongMemento memento = new LongMemento();
memento.setNum(num);
return memento;
}
}
//
public class Test {
public static void main(String[] args){
Caretaker caretaker = new Caretaker();
Originator originator = new Originator();
originator.setNum(100);
caretaker.setMemento(originator.createMemento());
System.out.println("start: " + originator.getNum());
originator.setNum(10);
System.out.println("then: " + originator.getNum());
originator.setMemento(caretaker.getMemento());
System.out.println("reset: " + originator.getNum());
caretaker.save(originator.createLongMemento());
System.out.println("2start: " + originator.getNum());
originator.setNum(20);
System.out.println("2then: " + originator.getNum());
originator.setLongMemento(caretaker.read());
System.out.println("2reset: " + originator.getNum());
}
}
//
start: 100
then: 10
reset: 100
2start: 100
2then: 20
2reset: 100
4. 요약: 메모(Memento) 모델의 의도는 대상에게 상태 저장과 상태 복구 기능을 제공하는 데 있다.응용 프로그램 세션 중 대상을 저장하고 복구하는 가장 흔히 볼 수 있는 이유는 취소 작업을 지원하는 것입니다.이 경우 우리는 대상의 상태를 다른 대상에 저장할 수 있다.대상이 여러 세션에 걸쳐 있는 지속적인 저장소를 지원하기 위해, 대상의 서열화나 다른 방식으로 비망록을 저장할 수 있습니다.5. 참조:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=29140694&id=4127905
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 행위 형 모델 ― 3.7 비망록 모델<?php /** * 3.7 * : * , * , , * 。 * * : * 1. (Originator) * : Memento, * , * 。Originator * ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.