JAVAの23種類の設計モード---覚書モード(一)

2353 ワード

メモモード:パッケージ性を損なうことなく、1つのオブジェクトの内部状態をキャプチャし、そのオブジェクトの外にこの状態を保存することで、後でそのオブジェクトを元の保存状態に戻すことができる.注意:a:メモモードはオブジェクトのバックアップモードであり、プログラムデータのバックアップ方法を提供する.b:メモモードには、発起人ロール、メモロール、メモマネージャロールの3つのロールが含まれているc:一般的なデータベースのトランザクション管理、ロールバック、メモモードが用いられる.d:メモが作成されると、ライフサイクルをアクティブに管理し、作成するには使用し、使用しないですぐに参照を削除します.また、頻繁にバックアップを作成するシーンでメモモードを使用しないでください.ありふれた
package MemoOne;
//   
public class Programer {
//    
    private String codeState = null;
    //      
    public void changCodeState(){
        this.codeState="       ";
    }
    //getter/setter
    public String getCodeState() {
        return codeState;
    }
    public void setCodeState(String codeState) {
        this.codeState = codeState;
    }
    //      
    public Memento createMemento(){
        return new Memento(this.codeState);
    }
    //      
    public void restoreMemento(Memento _mement){
        this.setCodeState(_mement.getCodeState());
    }
package MemoOne;

//   
/**
 * @author lanou3g
 *
 */
public class Memento {
    //     
    private String codeState = null;
    //     
    public Memento(String codeState) {
        this.codeState = codeState;
    }
    //getter,getter
    public String getCodeState() {
        return codeState;
    }
    public void setCodeState(String CodeState) {
        this.codeState = codeState;
    }

}

package MemoOne;
//      
public class Caretaker {
//     
    private Memento memento;
    //getter.setter

    public Memento getMemento() {
        return memento;
    }

    public void setMemento(Memento memento) {
        this.memento = memento;
    }
    
}

package MemoOne;
//         
public class Client {
public static void main(String[] args) {
    //     
    Programer programer = new Programer();
    //       
    Caretaker caretaker = new Caretaker();
    //       
    programer.setCodeState("         ");
    //  :         
    System.out.println(programer.getCodeState());
    //    
    caretaker.setMemento(programer.createMemento());
    //    
    programer.createMemento();
    System.out.println(programer.getCodeState());
    //  :       
    //        
    programer.restoreMemento(caretaker.getMemento());
    System.out.println(programer.getCodeState());
    //  :         
}
}




}