디자인 모드 18의 메모 모드

배경

주제부터 시작하겠습니다. 메모 모드는 어떤 문제를 해결합니까? 주로 실행 취소 기능을 실현하는 데 사용됩니다. 대부분의 소프트웨어에는 실행 취소 기능이 있습니다. 취소하려면 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를 검색 하여 답장하여 백그라운드에서 정보를 얻을 수 있습니다.

  1. 回复"java" 获取java电子书;

  2. 回复"python"获取python电子书;

  3. 回复"算法"获取算法电子书;

  4. 回复"大数据"获取大数据电子书;

  5. 回复"spring"获取SpringBoot的学习视频。

  6. 回复"面试"获取一线大厂面试资料

  7. 回复"进阶之路"获取Java进阶之路的思维导图

  8. 回复"手册"获取阿里巴巴Java开发手册(嵩山终极版)

  9. 回复"总结"获取Java后端面试经验总结PDF版

  10. 回复"Redis"获取Redis命令手册,和Redis专项面试习题(PDF)

  11. 回复"并发导图"获取Java并发编程思维导图(xmind终极版)

기타 : 더 많은 놀라움을 얻으 려면 [ 내 혜택 ]을 클릭하십시오 .

추천

출처blog.csdn.net/wujialv/article/details/109635805