배경
주제부터 시작하겠습니다. 메모 모드는 어떤 문제를 해결합니까? 주로 실행 취소 기능을 실현하는 데 사용됩니다. 대부분의 소프트웨어에는 실행 취소 기능이 있습니다. 취소하려면 Ctrl + Z를 누르기 만하면됩니다. 데이터베이스에는 롤백 작업도 있습니다. 게임에는 아카이브 기능이 있습니다. 레이싱 게임에는 시간 역 추적 기능이 있습니다.
메모 모드는 현재 작업을 실행 취소해야하는 경우 개체의 내부 상태를 기록합니다. 데이터를 원래 상태로 복원 할 수 있습니다.
메모 모드 란?
“캡슐화를 위반하지 않고 객체의 내부 상태를 캡처하고 외부화하여 나중에이 상태로 객체를 복원 할 수 있습니다. 이러한 방식으로 객체를 향후 원래 상태로 복원 할 수 있습니다.)
”
메모 모드는 스냅 샷 모드라고도합니다. 메모 모드의 사용은 실행 취소 작업을 실현하기위한 디자인 모드라는 점만 기억하면됩니다.
메모 모드는 주로 다음 세 가지 요소로 구성됩니다.
“”
작성자 역할 : 현재 내부 상태 정보를 기록하고 메모 작성 및 메모 데이터 복원 기능을 제공하며 기타 업무 기능을 구현하며 메모의 모든 정보에 접근 할 수 있습니다.
Memento 역할 : 개시 자의 내부 상태를 저장하고 필요할 때 개시 자에게 이러한 내부 상태를 제공합니다.
관리자 (Caretaker) 역할 : 메모 관리, 메모 저장 및 획득 기능을 제공하지만 메모 내용에 접근 및 수정할 수 없습니다.
메모 모드
암호
기념물
돌보는 사람
창작자
코드 테스트
@Test
public void test() {
Originator or=new Originator();
Caretaker cr=new Caretaker();
or.setState("S0");
System.out.println("初始状态:"+or.getState());
cr.setMemento(or.createMemento()); //保存状态
or.setState("S1");
System.out.println("新的状态:"+or.getState());
or.restoreMemento(cr.getMemento()); //恢复状态
System.out.println("恢复状态:"+or.getState());
}
시험 결과:
初始状态:S0
新的状态:S1
恢复状态:S0
메모 모드에 대한 생각
프로세스 승인 시스템을 개발하려는 경우 다른 시나리오를 살펴 보겠습니다. 여기서는 프로세스를 단순화합니다. 프로세스 승인에는 거부 기능이 있어야합니다. 예를 들어 C 프로세스에서는 B를 거부해야합니다. 메모 모드를 사용할 수 있습니까?
거절
그러나 문제가 없다는 것을 알았을 때 상태가 많으면 각 상태를 백업해야하므로 비교적 큰 메모리 리소스를 차지하게됩니다. 따라서 메모 모드를 사용할 때이 위험을 고려하십시오.
과거에 추천
QR 코드를 스캔하여 더 흥미 진진하게 만드세요. 또는 WeChat 에서 Lvshen_9를 검색 하여 답장하여 백그라운드에서 정보를 얻을 수 있습니다.
回复"java" 获取java电子书;
回复"python"获取python电子书;
回复"算法"获取算法电子书;
回复"大数据"获取大数据电子书;
回复"spring"获取SpringBoot的学习视频。
回复"面试"获取一线大厂面试资料
回复"进阶之路"获取Java进阶之路的思维导图
回复"手册"获取阿里巴巴Java开发手册(嵩山终极版)
回复"总结"获取Java后端面试经验总结PDF版
回复"Redis"获取Redis命令手册,和Redis专项面试习题(PDF)
回复"并发导图"获取Java并发编程思维导图(xmind终极版)
기타 : 더 많은 놀라움을 얻으 려면 [ 내 혜택 ]을 클릭하십시오 .