Memento pattern
-Memento -> 기념물
-behavioral pattern 중 하나
-이전 상태를 복구하기 위해 사용되는 패턴.
-3개의 actor class로 구성됨.
Memento : restore 위한 상태를 포함하는 객체
Originator : Memento객체로 state를 만들고 저장하는 객체.
CareTaker : Memento로 부터 객체 상태를 복구하는 역할.
Main 호출 부분:
Originator originator = new Originator();
CareTacker careTacker = new CareTacker();
originator.setState("State #1");
originator.setState("State #2");
careTacker.add(originator.saveStateToMemento());
originator.setState("Stage #3");
careTacker.add(originator.saveStateToMemento());
originator.setState("Stage #4");
careTacker.add(originator.saveStateToMemento());
originator.getStateFromMemento(careTacker.get(0));
for (int i =0 ; careTracker.get(i)!=null;++i){
originator.getStateFromMemento(careTacker.get(i));
Log.d("hello","state :"+ originator.getState() );
}
Memento 객체들을 관리함.
CareTacker.java
public class CareTacker {
private List mementoList = new ArrayList<>();
public void add ( Memento state){
mementoList.add( state);
}
public Memento get(int index){
return mementoList.get(index);
}
}
상태를 저장하는 녀석
Memento.java
public class Memento {
private String state;
public Memento( String state ){
this.state=state;
}
public String getState() {
return state;
}
}
Memento로부터 현상태를 복원하거나, Memento로 현상태를 저장함.
Originator.java
public class Originator {
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public Memento saveStateToMemento(){
return new Memento(state);
}
public void getStateFromMemento(Memento memento){
state=memento.getState();
}
}
결과:
07-24 17:59:38.636 10010 10010 D hello : state :State #2
07-24 17:59:38.636 10010 10010 D hello : state :Stage #3
07-24 17:59:38.636 10010 10010 D hello : state :Stage #4
출처 :
'pattern' 카테고리의 다른 글
| uml 화살표 의미 (0) | 2020.07.31 |
|---|---|
| Observer pattern (0) | 2018.07.25 |
| Mediator pattern (0) | 2018.07.24 |
| Iterator Pattern (0) | 2018.07.24 |
| Interpreter pattern (0) | 2018.07.20 |