メモモードコードの例(java言語版)


前言:メモモードは、オブジェクトのステータスを保存し、適切なタイミングでオブジェクトを復元します.メモモードは動作モードに属します.利点:1、ユーザーに状態を回復できるメカニズムを提供し、ユーザーがある履歴の状態に比較的便利に戻ることができる.2、情報のカプセル化を実現し、ユーザーが状態の保存の詳細に関心を持つ必要がない.欠点:リソースを消費する.クラスのメンバー変数が多すぎると、比較的大きなリソースが消費され、保存するたびに一定のメモリが消費されます.
JAVA言語版メモモード
ストレージクラスを作成するには、次の手順に従います.
public class Memento {
    private String state;

    public Memento(String state) {
        this.state = state;
    }

    public String getState() {
        return state;
    }
}

イニシエータクラスを作成するには、次の手順に従います.
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();
    }
}

デーモンクラスを作成するには
public class CareTaker {
    private List mementoList =new ArrayList<>();

    public void add(Memento memento){
        mementoList.add(memento);
    }

    public Memento get(int index){
        return mementoList.get(index);
    }
}

MementoPatternDemoクラスのプレゼンテーションメモモードを使用します.
public class MementoPatternDemo {
    public static void main(String[] args) {
        Originator originator = new Originator();
        CareTaker careTaker = new CareTaker();
        originator.setState("   ");
        originator.setState("   ");
        careTaker.add(originator.saveStateToMemento());
        originator.setState("   ");
        careTaker.add(originator.saveStateToMemento());
        originator.setState("   ");

        System.out.println("    : " + originator.getState());
        originator.getStateFromMemento(careTaker.get(0));
        System.out.println("        : " + originator.getState());
        originator.getStateFromMemento(careTaker.get(1));
        System.out.println("        : " + originator.getState());
    }
}

出力結果:
    :    
        :    
        :