디자인 패턴-Memento 패턴
Memento 패턴은 개체의 상태를 이전 상태로 복원하는 데 사용됩니다. Memento 패턴은 행동 패턴 범주에 속합니다.
이행
Memento 패턴은 세 가지 액터 클래스를 사용합니다. Memento에는 복원 할 개체의 상태가 포함됩니다. Originator는 Memento 개체에 상태를 생성하고 저장하며 Caretaker 개체는 Memento에서 개체 상태를 복원합니다. Memento , Originator 및 CareTaker 클래스를 만들었습니다 .
MementoPatternDemo , 데모 클래스는 사용 관리인을 하고 주관자는 객체 상태의 복원을 표시하는 객체.
1 단계
Memento 클래스를 만듭니다.
Memento.java
public class Memento {
private String state;
public Memento(String state){
this.state = state;
}
public String getState(){
return state;
}
}
2 단계
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();
}
}
3 단계
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);
}
}
4 단계
CareTaker 및 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());
}
}
5 단계
출력을 확인하십시오.
Current State: State #4
First saved State: State #2
Second saved State: State #3