added memento example
This commit is contained in:
		
							
								
								
									
										19
									
								
								src/learn/simple_memento/CareTaker.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/learn/simple_memento/CareTaker.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| package learn.simple_memento; | ||||
|  | ||||
| import java.util.Stack; | ||||
|  | ||||
| public class CareTaker { | ||||
|     private final Stack<Originator.Memento> snapshots = new Stack<>(); | ||||
|  | ||||
|     public void save(Originator.Memento memento) { | ||||
|         snapshots.push(memento); | ||||
|     } | ||||
|  | ||||
|     public void revert(Originator originator) { | ||||
|         if (!snapshots.isEmpty()) { | ||||
|             originator.setMemento(snapshots.pop()); | ||||
|         } else { | ||||
|             System.out.println("No saved memento to revert"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										19
									
								
								src/learn/simple_memento/Main.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/learn/simple_memento/Main.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| package learn.simple_memento; | ||||
|  | ||||
| public class Main { | ||||
|     public static void main(String[] args) { | ||||
|         Originator originator = new Originator(); | ||||
|         CareTaker careTaker = new CareTaker(); | ||||
|  | ||||
|         originator.setState("blue"); | ||||
|         originator.setState("red"); | ||||
|         careTaker.save(originator.createMemento()); | ||||
|         originator.setState("yellow"); | ||||
|         careTaker.save(originator.createMemento()); | ||||
|         originator.setState("white"); | ||||
|  | ||||
|         careTaker.revert(originator); | ||||
|         careTaker.revert(originator); | ||||
|         careTaker.revert(originator); | ||||
|     } | ||||
| } | ||||
							
								
								
									
										35
									
								
								src/learn/simple_memento/Originator.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								src/learn/simple_memento/Originator.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| package learn.simple_memento; | ||||
|  | ||||
| public class Originator { | ||||
|     private String state; | ||||
|  | ||||
|     public String getState() { | ||||
|         return state; | ||||
|     } | ||||
|  | ||||
|     public void setState(String state) { | ||||
|         this.state = state; | ||||
|         System.out.println("[Originator] Setting state to " + state); | ||||
|     } | ||||
|  | ||||
|     public Memento createMemento() { | ||||
|         return new Memento(state); | ||||
|     } | ||||
|  | ||||
|     public void setMemento(Memento memento) { | ||||
|         state = memento.getSavedState(); | ||||
|         System.out.println("[Originator] State after restoring from memento: " + state); | ||||
|     } | ||||
|  | ||||
|     public class Memento { | ||||
|         private final String state; | ||||
|  | ||||
|         public Memento(String state) { | ||||
|             this.state = state; | ||||
|         } | ||||
|  | ||||
|         public String getSavedState() { | ||||
|             return state; | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user