设计模式/行为型设计模式
简述
指在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态
UML图
 
代码
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 
 | @Getter
 @ToString(callSuper = true, includeFieldNames = true)
 public class MementoAnimal {
 private String color;
 
 public MementoAnimal(String color) {
 this.color = color;
 }
 }
 
 @Slf4j
 @Setter
 public class Parrot implements Animal {
 private String color;
 
 public Parrot(String color) {
 this.color = color;
 }
 
 
 public MementoAnimal createMemento() {
 return new MementoAnimal(color);
 }
 
 
 public void restore(MementoAnimal mementoAnimal) {
 color = mementoAnimal.getColor();
 }
 
 @Override
 public void run() {
 log.debug("小鹦鹉 -- " + color);
 }
 }
 
 
 @Data
 @ToString
 public class MementoManager {
 private MementoAnimal mementoAnimal;
 }
 
 
 @Slf4j
 public class Client {
 public static void main(String[] args) {
 Parrot parrot = new Parrot(“黄色的”);
 parrot.run();
 MementoAnimal parrotMemento = parrot.createMemento();
 MementoManager manager = new MementoManager();
 manager.setMementoAnimal(parrotMemento);
 log.error(" 备份信息: " + manager.toString());
 parrot.setColor("粉色的");
 parrot.run();
 log.error(" 备份信息: " + manager.toString());
 parrot.restore(manager.getMementoAnimal());
 parrot.run();
 }
 }
 
 |