Pola Desain - Pola Memento
Pola Memento digunakan untuk mengembalikan keadaan suatu objek ke keadaan sebelumnya. Pola Memento termasuk dalam kategori pola perilaku.
Penerapan
Pola Memento menggunakan tiga kelas aktor. Memento berisi keadaan suatu objek yang akan dipulihkan. Originator membuat dan menyimpan status di objek Memento dan objek Caretaker bertanggung jawab untuk memulihkan status objek dari Memento. Kami telah membuat kelas Memento , Originator dan CareTaker .
MementoPatternDemo , kelas demo kami, akan menggunakan objek CareTaker dan Originator untuk menunjukkan pemulihan status objek.
Langkah 1
Buat kelas Memento.
Memento.java
public class Memento {
private String state;
public Memento(String state){
this.state = state;
}
public String getState(){
return state;
}
}
Langkah 2
Buat kelas Originator
Originator.java
public class Originator {
private String state;
public void setState(String state){
this.state = state;
}
public String getState(){
return state;
}
public Memento saveStateToMemento(){
return new Memento(state);
}
public void getStateFromMemento(Memento memento){
state = memento.getState();
}
}
LANGKAH 3
Buat kelas CareTaker
CareTaker.java
import java.util.ArrayList;
import java.util.List;
public class CareTaker {
private List<Memento> mementoList = new ArrayList<Memento>();
public void add(Memento state){
mementoList.add(state);
}
public Memento get(int index){
return mementoList.get(index);
}
}
LANGKAH 4
Gunakan objek CareTaker dan Originator .
MementoPatternDemo.java
public class MementoPatternDemo {
public static void main(String[] args) {
Originator originator = new Originator();
CareTaker careTaker = new CareTaker();
originator.setState("State #1");
originator.setState("State #2");
careTaker.add(originator.saveStateToMemento());
originator.setState("State #3");
careTaker.add(originator.saveStateToMemento());
originator.setState("State #4");
System.out.println("Current State: " + originator.getState());
originator.getStateFromMemento(careTaker.get(0));
System.out.println("First saved State: " + originator.getState());
originator.getStateFromMemento(careTaker.get(1));
System.out.println("Second saved State: " + originator.getState());
}
}
LANGKAH 5
Verifikasi hasilnya.
Current State: State #4
First saved State: State #2
Second saved State: State #3