Skip to content

Commit 125e2d3

Browse files
committed
memento
1 parent b43ed7d commit 125e2d3

File tree

3 files changed

+73
-0
lines changed

3 files changed

+73
-0
lines changed

src/main/java/helloworld/Main.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import helloworld.behavioral.mediator.HelloWorldMediator;
1111
import helloworld.behavioral.mediator.HelloWorldSlogan;
1212
import helloworld.behavioral.mediator.HelloWorldTarget;
13+
import helloworld.behavioral.memento.HelloWorldMementoOriginator;
1314
import helloworld.creational.abstract_factory.AbstractFactory;
1415
import helloworld.creational.abstract_factory.SplitHelloWorldFactory;
1516
import helloworld.creational.builder.HelloWorldBuilder;
@@ -107,5 +108,11 @@ public static void main(String[] args) throws InstantiationException, IllegalAcc
107108
helloWorldTarget.setHelloWorldMediator(helloWorldMediator);
108109
System.out.println(helloWorldTarget.helloWorld());
109110

111+
HelloWorldMementoOriginator helloWorldMementoOriginator = new HelloWorldMementoOriginator();
112+
HelloWorldMementoOriginator.Memento memento = helloWorldMementoOriginator.set("Hello Memento!").saveToMemento();
113+
helloWorldMementoOriginator.set("Hello Whatever!");
114+
helloWorldMementoOriginator.restoreFromMemento(memento);
115+
System.out.println(helloWorldMementoOriginator.helloWorld());
116+
110117
}
111118
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package helloworld.behavioral.memento;
2+
3+
import helloworld.HelloWorld;
4+
5+
/**
6+
* @author yihua.huang@dianping.com
7+
*/
8+
public class HelloWorldMementoOriginator implements HelloWorld{
9+
10+
private String state;
11+
12+
public HelloWorldMementoOriginator set(String state) {
13+
this.state = state;
14+
return this;
15+
}
16+
17+
public Memento saveToMemento() {
18+
return new Memento(state);
19+
}
20+
21+
public void restoreFromMemento(Memento memento) {
22+
state = memento.getSavedState();
23+
}
24+
25+
@Override
26+
public String helloWorld() {
27+
return state;
28+
}
29+
30+
public static class Memento {
31+
private final String state;
32+
33+
public Memento(String stateToSave) {
34+
state = stateToSave;
35+
}
36+
37+
public String getSavedState() {
38+
return state;
39+
}
40+
}
41+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package helloworld.behavioral.memento;
2+
3+
import helloworld.behavioral.mediator.HelloWorldMediator;
4+
import helloworld.behavioral.mediator.HelloWorldSlogan;
5+
import helloworld.behavioral.mediator.HelloWorldTarget;
6+
import org.junit.Test;
7+
8+
import static org.hamcrest.MatcherAssert.assertThat;
9+
import static org.hamcrest.Matchers.is;
10+
11+
/**
12+
* @author yihua.huang@dianping.com
13+
*/
14+
public class HelloWorldMementoTest {
15+
16+
@Test
17+
public void testHelloWorldMediator(){
18+
HelloWorldMementoOriginator helloWorldMementoOriginator = new HelloWorldMementoOriginator();
19+
HelloWorldMementoOriginator.Memento memento = helloWorldMementoOriginator.set("Hello Memento!").saveToMemento();
20+
helloWorldMementoOriginator.set("Hello Whatever!");
21+
assertThat(helloWorldMementoOriginator.helloWorld(),is("Hello Whatever!"));
22+
helloWorldMementoOriginator.restoreFromMemento(memento);
23+
assertThat(helloWorldMementoOriginator.helloWorld(),is("Hello Memento!"));
24+
}
25+
}

0 commit comments

Comments
 (0)