pattern
Memento pattern
easy16
2018. 7. 24. 18:08
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 ListmementoList = 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
출처 :