Terdapat total 23 macam design pattern yang dikelompokkan menjadi 3 macam:
- Creational (menyangkut pembuatan objek):
- Structural (menyangkut struktur program):
- Adapter Pattern
- Bridge Pattern
- Composite Pattern
- Decorator Pattern
- Facade Pattern
- Filter Pattern
- Flyweight Pattern
- Proxy Pattern
- Behavioral (menyangkut kelakuan program):
Berikut adalah contoh gambar pembagian 23 pattern diatas
Kali ini kita akan membahas lebih dalam tentang:
MEMENTO PATTERN
Definisi:
Sebuah pattern yang digunakan untuk mengembalikan kondisi sebuah objek ke kondisi sebelumnya, seperti "undo" atau "redo".
Struktur:
Terdiri dari 3 actor class utama, yaitu:
- Originator: Menciptakan semacam checkpoint untuk melakukan memento
- Memento: Berisi object yang akan di restore kembali menjadi originator
- Caretaker: Bertugas mengembalikan object didalam memento menjadi originator
Contoh Penggunaan:
Contoh penggunaan adalah pada mekanik yang akan mereparasi kedua piringan rem sebuah mobil. Hanya satu piringan yang dicopot dalam satu waktu sementara sisi lainnya digunakan sebagai memento atau contoh untuk mengembalikan kondisi piringan rem seperti semula.
Contoh Code dalam JAVA:
Langkah 1:
Buat Class Memento
Memento.java
Contoh Code dalam JAVA:
Langkah 1:
Buat Class Memento
Memento.java
public class Memento {
private String state;
public Memento(String state){
this.state = state;
}
public String getState(){
return state;
}
}
Langkah 2:
Buat Class 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 Class 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 Class CareTaker dan Originator dalam Class MementoPatternDemo
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 Terakhir:
Periksa outputnya
Current State: State #4
First saved State: State #2
Second saved State: State #3
Tidak ada komentar:
Posting Komentar