비망록 디자인 모드

2648 단어 디자인 모드
비망록 (Memento) 모드 는 태그 (Token) 모드 라 고도 부른다.GOF 는 비망록 모드 에 대해 패 키 징 성 을 파괴 하지 않 는 전제 에서 대상 의 내부 상 태 를 포착 하고 이 대상 외 에 이 상 태 를 저장 하 는 것 으로 정의 합 니 다.이렇게 하면 이 대상 을 원래 저 장 된 상태 로 복원 할 수 있다.
/**
 *      
 */
public class Originator {

    private String state;

    /**
     *               
     */
    public MementoIF createMemento() {
        return new Memento(this.state);
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
        System.out.println("Current state is " + this.state);
    }

    /**
     *                  
     */
    public void restoreMemento(MementoIF memento) {
        Memento aMemento = (Memento) memento;
        this.setState(aMemento.getSavedState());
    }

    /**
     *      ,   
     */
    protected class Memento implements MementoIF {
        private String savedState;

        public Memento(String someState) {
            this.savedState = someState;
        }

        public String getSavedState() {
            return savedState;
        }

        public void setSavedState(String savedState) {
            this.savedState = savedState;
        }
    }
}

 
public interface MementoIF {

}

 
/**
 *      
 */
public class Caretaker {

    private MementoIF memento;
    /**
     *         
     */
    public MementoIF retrieveMemento() {
        return this.memento;
    }
    /**
     *         
     */
    public void saveMemento(MementoIF memento) {
        this.memento = memento;
    }
}

 
public class Client {
    //   
    private static Originator originator = new Originator();
    //   
    private static Caretaker caretaker = new Caretaker();

    public static void main(String[] args) {
        //         
        originator.setState("ON");
        //                
        caretaker.saveMemento(originator.createMemento());
        //         
        originator.setState("OFF");
        //         
        originator.restoreMemento(caretaker.retrieveMemento());
    }
}

좋은 웹페이지 즐겨찾기