ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 행위패턴 : Memento 패턴
    디자인패턴 2013. 2. 28. 10:27
    반응형

    분류 : 행위패턴(Behavioral Patterns)


    정의 :

    객체의 이전 상태를 저장하는 기능을 제공하는 패턴.

    용도 :

    originatorcaretaker 두개의 객체로 구현됨.

    originator : 내부 상태를 가지고 있는 객체.

    caretaker : originator에 어떤 행위를 하지만 변경사항을 되돌릴수 있는 기능이 있음.


    소스


    import java.util.List;
    import java.util.ArrayList;
    class Originator {
        private String state;
        // The class could also contain additional data that is not part of the
        // state saved in the memento.
     
        public void set(String state) {
            System.out.println("Originator: Setting state to " + state);
            this.state = state;
        }
     
        public Memento saveToMemento() {
            System.out.println("Originator: Saving to Memento.");
            return new Memento(state);
        }
     
        public void restoreFromMemento(Memento memento) {
            state = memento.getSavedState();
            System.out.println("Originator: State after restoring from Memento: " + state);
        }
     
        public static class Memento {
            private final String state;
     
            public Memento(String stateToSave) {
                state = stateToSave;
            }
     
            public String getSavedState() {
                return state;
            }
        }
    }
    
    
    
    import java.util.List;
    import java.util.ArrayList;
    class Caretaker {
        public static void main(String[] args) {
            List savedStates = new ArrayList();
     
            Originator originator = new Originator();
            originator.set("State1");
            originator.set("State2");
            savedStates.add(originator.saveToMemento());
            originator.set("State3");
            // We can request multiple mementos, and choose which one to roll back to.
            savedStates.add(originator.saveToMemento());
            originator.set("State4");
     
            originator.restoreFromMemento(savedStates.get(1));   
        }
    }
    
    


    참고자료

    http://en.wikipedia.org/wiki/Memento_pattern

    반응형

    '디자인패턴' 카테고리의 다른 글

    행위패턴 : State 패턴  (0) 2013.03.11
    행위패턴 : Observer 패턴  (0) 2013.03.04
    행위패턴 : Mediator 패턴  (0) 2013.02.28
    행위패턴 : Iterator 패턴  (0) 2013.02.27
    행위패턴 : Interpreter 패턴  (0) 2013.02.27

    댓글

Designed by Tistory.