Memento pattern
-Memento -> 기념물
-behavioral pattern 중 하나
-이전 상태를 복구하기 위해 사용되는 패턴.
-3개의 actor class로 구성됨.
Memento : restore 위한 상태를 포함하는 객체
Originator : Memento객체로 state를 만들고 저장하는 객체.
CareTaker : Memento로 부터 객체 상태를 복구하는 역할.
Main 호출 부분:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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
1 2 3 4 5 6 7 8 9 10 11 | public class CareTacker { private List<memento> mementoList = new ArrayList<>(); public void add ( Memento state){ mementoList.add( state); } public Memento get( int index){ return mementoList.get(index); } } </memento> |
상태를 저장하는 녀석
Memento.java
1 2 3 4 5 6 7 8 9 10 | public class Memento { private String state; public Memento( String state ){ this .state=state; } public String getState() { return state; } } |
Memento로부터 현상태를 복원하거나, Memento로 현상태를 저장함.
Originator.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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(); } }<font face= "맑은 고딕, sans-serif" ><span style= "white-space: normal;" > </span></font> |
결과:
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 |