設計モード-メモモード(Memento)
2005 ワード
主な目的は、オブジェクトのステータスを保存して、適切なタイミングでオブジェクトを復元することです.個人的にはバックアップモードと呼ぶほうがイメージ的だと思います.
一般的に言えば、元のクラスA、Aには様々な属性があると仮定し、Aはバックアップが必要な属性を決定することができ、メモクラスBはAの内部状態を格納するために使用される.
クラスCは、メモを格納するためのものであり、格納しかできず、変更できないなどの操作である.
Originalクラスは元のクラスで、保存する必要がある属性valueと、value値を保存するためのメモクラスを作成します.
Mementoクラスは覚書クラス,Storageクラスは覚書を格納するクラスであり,Mementoクラスのインスタンスを持つパターンは理解しやすい.
一般的に言えば、元のクラスA、Aには様々な属性があると仮定し、Aはバックアップが必要な属性を決定することができ、メモクラスBはAの内部状態を格納するために使用される.
クラスCは、メモを格納するためのものであり、格納しかできず、変更できないなどの操作である.
Originalクラスは元のクラスで、保存する必要がある属性valueと、value値を保存するためのメモクラスを作成します.
Mementoクラスは覚書クラス,Storageクラスは覚書を格納するクラスであり,Mementoクラスのインスタンスを持つパターンは理解しやすい.
◆Original :
public class Original {
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public Original(String value) {
this.value = value;
}
public Memento createMemento(){
return new Memento(value);
}
public void restoreMemento(Memento memento){
this.value = memento.getValue();
}
}
◆Memento :
public class Memento {
private String value;
public Memento(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
◆Storage
public class Storage {
private Memento memento;
public Storage(Memento memento) {
this.memento = memento;
}
public Memento getMemento() {
return memento;
}
public void setMemento(Memento memento) {
this.memento = memento;
}
}
◆ :
public class Test {
public static void main(String[] args) {
//
Original origi = new Original("egg");
//
Storage storage = new Storage(origi.createMemento());
//
System.out.println(" :" + origi.getValue());
origi.setValue("niu");
System.out.println(" :" + origi.getValue());
//
origi.restoreMemento(storage.getMemento());
System.out.println(" :" + origi.getValue());
}
}
◆ :
:egg
:niu
:egg
オリジナルクラスを新規作成するとvalueがeggに初期化され、その後修正され、valueの値をniuに設定し、最後に最後から2行目でリカバリ状態になり、結果的にリカバリに成功しました.