Memento Pattern

This commit is contained in:
kim
2021-01-19 22:45:39 +09:00
parent a4bacc5e49
commit af9458d9de
5 changed files with 74 additions and 1 deletions

View File

@@ -0,0 +1,32 @@
package Memento;
import Memento.abc.Memento;
import Memento.abc.Originator;
import java.util.Stack;
public class Application {
public static void main(String[] args) {
Stack<Memento> mementos = new Stack<>();
Originator originator = new Originator();
originator.setState("state 1");
mementos.push(originator.createMemento());
originator.setState("state 2");
mementos.push(originator.createMemento());
originator.setState("state 3");
mementos.push(originator.createMemento());
originator.setState("state Final");
mementos.push(originator.createMemento());
originator.restoreMemento(mementos.pop());
System.out.println(originator.getState());
originator.restoreMemento(mementos.pop());
System.out.println(originator.getState());
originator.restoreMemento(mementos.pop());
System.out.println(originator.getState());
originator.restoreMemento(mementos.pop());
System.out.println(originator.getState());
}
}

View File

@@ -0,0 +1,5 @@
Memento Pattern
- 상태 저장하기
- 메멘토 패턴을 통해 객체의 상태를 저장하고 이전상태로 복구

View File

@@ -0,0 +1,14 @@
package Memento.abc;
public class Memento {
String state;
protected Memento(String state) {
this.state = state;
}
protected String getState() {
return this.state;
}
}

View File

@@ -0,0 +1,22 @@
package Memento.abc;
public class Originator {
String state;
public Memento createMemento() {
return new Memento(state);
}
public void restoreMemento(Memento memento) {
this.state = memento.getState();
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}

View File

@@ -51,7 +51,7 @@ public class UserController extends HttpServlet {
if (result == 1) {
response.sendRedirect("index.jsp");
} else {
}
}
}