메멘토 패턴

캡슐화를 위반하지 않고 개체가 나중에 이 상태로 복원될 수 있도록 개체의 내부 상태를 캡처하고 외부화합니다.



참가자들


  • Memento: Originator 개체의 내부 상태를 저장합니다. memento는 작성자의 재량에 따라 필요한 만큼 작성자의 내부 상태를 많이 또는 적게 저장할 수 있습니다.
    발신자 이외의 개체에 의한 액세스로부터 보호합니다. Mementos에는 사실상 두 개의 인터페이스가 있습니다. Caretaker는 Memento에 대한 좁은 인터페이스를 봅니다. 다른 개체에 memento를 전달할 수만 있습니다. 반대로 Originator는 이전 상태로 복원하는 데 필요한 모든 데이터에 액세스할 수 있는 넓은 인터페이스를 봅니다. 이상적으로는 memento를 생성하는 생성자만 memento의 내부 상태에 액세스할 수 있습니다.
  • 작성자: 현재 내부 상태의 스냅샷이 포함된 기념품을 만듭니다.
    기념품을 사용하여 내부 상태를 복원합니다
  • .
  • 관리인: 기념품을 안전하게 보관합니다.
    유품의 내용을 조작하거나 조사하지 마십시오.

  • 암호




    public class Main {
    
        public static void main(String[] args) {
            Originator o = new Originator();
            o.setState("On");
            Caretaker c = new Caretaker();
            c.setMemento(o.createMemento());
            o.setState("Off");
            o.setMemento(c.getMemento());
        }
    }
    
    public class Originator {
    
        private String state;
    
        public String getState() {
            return state;
        }
    
        public void setState(String state) {
            this.state = state;
            System.out.println("State = " + state);
        }
    
        public Memento createMemento() {
            return new Memento(state);
        }
    
        public void setMemento(Memento memento) {
            System.out.println("Restoring state...");
            setState(memento.getState());
        }
    }
    
    public class Memento {
    
        private String state;
    
        public Memento(String state) {
            this.state = state;
        }
    
        public String getState() {
            return state;
        }
    
        public void setState(String state) {
            this.state = state;
        }
    }
    
    public class Caretaker {
    
        private Memento memento;
    
        public Memento getMemento() {
            return memento;
        }
    
        public void setMemento(Memento memento) {
            this.memento = memento;
        }
    }
    

    산출



    State = On
    State = Off
    Restoring state...
    State = On
    




    eidherjulian61 / 디자인 패턴








    좋은 웹페이지 즐겨찾기