JAVA 비망록 모드 깊이 이해

3908 단어 JAVA비망록 모드
비망록 모드
비망록 모드(Memento Pattern)는 대상 의 상 태 를 적당 한 시기 에 복원 할 수 있 도록 저장 합 니 다.비망록 모드 는 행위 형 모드 에 속한다.
소개 하 다.
의도:
패 키 징 성 을 파괴 하지 않 는 전제 에서 대상 의 내부 상 태 를 포착 하고 이 대상 외 에 이 상 태 를 저장 합 니 다.
주요 해결:
비망록 모드 란 패 키 지 를 파괴 하지 않 는 전제 에서 한 대상 의 내부 상 태 를 포착 하고 이 대상 외 에 이 상 태 를 저장 하 는 것 으로 나중에 대상 을 원래 저 장 된 상태 로 복원 할 수 있다.
언제 사용 할 지:
많은 경우 에 우 리 는 항상 한 대상 의 내부 상 태 를 기록 해 야 한다.이렇게 하 는 목적 은 사용자 가 불확실 하거나 잘못된 조작 을 취소 하고 원래 의 상태 로 회복 하여 그 가'후회 약'을 먹 을 수 있 도록 하 는 것 이다.
어떻게 해결 합 니까?
비망록 류 를 통 해 대상 상 태 를 전문 적 으로 저장 합 니 다.
키 코드:
고객 은 비망록 류 와 결합 하지 않 고 비망록 관리 류 와 결합 합 니 다.
인 스 턴 스 적용:
1.후회 약.
2.게임 할 때 보관 함.
3.윈도 우즈 의 ctri+z.
4.IE 의 후퇴.
5.데이터베이스 의 사무 관리.
장점:
1.사용자 에 게 상 태 를 회복 할 수 있 는 체 제 를 제공 하여 사용자 가 특정한 역사의 상태 로 비교적 편리 하 게 돌아 갈 수 있 도록 한다.
2.정보의 패 키 징 을 실현 하여 사용자 가 상태의 저장 디 테 일 에 관심 을 가지 지 않 아 도 된다.
단점:
자원 을 소모 하 다.만약 에 클래스 의 구성원 변수 가 너무 많 으 면 비교적 큰 자원 을 차지 하고 저장 할 때마다 일정한 메모 리 를 소모 할 것 이다.
사용 필드:
1.데 이 터 를 저장/복원 해 야 하 는 관련 상태 장면.
2.스크롤 백 가능 한 동작 을 제공 합 니 다.
주의사항:
1.디 미트 원칙 에 부합 하기 위해 비망록 을 관리 하 는 종 류 를 추가 해 야 한다.
2.메모 리 를 절약 하기 위해 원형 모드+비망록 모드 를 사용 할 수 있 습 니 다.
이루어지다
비망록 모드 는 세 가지 종류의 Memento,Originator,CareTaker 를 사용한다.메 멘 토 는 회복 할 대상 의 상 태 를 담 고 있다.Originator 는 Memento 대상 에 상 태 를 만 들 고 저장 합 니 다.케 어 테 이 커 대상 은 메 멘 토 에서 대상 의 상 태 를 회복 하 는 역할 을 한다.
Memento PatternDemo,우리 의 프 리 젠 테 이 션 클래스 는 CareTaker 와 Originator 대상 을 사용 하여 대상 의 상태 회복 을 표시 합 니 다.

단계 1
Memento 클래스 를 만 듭 니 다.

public class Memento {
  private String state;
 
  public Memento(String state){
   this.state = state;
  }
 
  public String getState(){
   return state;
  } 
}
단계 2
Originator 클래스 를 만 듭 니 다.

public class Originator {
  private String state;
 
  public void setState(String state){
   this.state = state;
  }
 
  public String getState(){
   return state;
  }
 
  public Memento saveStateToMemento(){
   return new Memento(state);
  }
 
  public void getStateFromMemento(Memento Memento){
   state = Memento.getState();
  }
}
단계 3
CareTaker 클래스 를 만 듭 니 다.

import java.util.ArrayList;
import java.util.List;
 
public class CareTaker {
  private List<Memento> mementoList = new ArrayList<Memento>();
 
  public void add(Memento state){
   mementoList.add(state);
  }
 
  public Memento get(int index){
   return mementoList.get(index);
  }
}
단계 4
CareTaker 와 Originator 대상 을 사용 합 니 다.

public class MementoPatternDemo {
  public static void main(String[] args) {
   Originator originator = new Originator();
   CareTaker careTaker = new CareTaker();
   originator.setState("State #1");
   originator.setState("State #2");
   careTaker.add(originator.saveStateToMemento());
   originator.setState("State #3");
   careTaker.add(originator.saveStateToMemento());
   originator.setState("State #4");
 
   System.out.println("Current State: " + originator.getState());  
   originator.getStateFromMemento(careTaker.get(0));
   System.out.println("First saved State: " + originator.getState());
   originator.getStateFromMemento(careTaker.get(1));
   System.out.println("Second saved State: " + originator.getState());
  }
}
단계 5
출력 을 검증 하 다.
Current State: State #4
First saved State: State #2
Second saved State: State #3
이상 은 JAVA 비망록 모델 의 상세 한 내용 을 깊이 이해 하고 JAVA 비망록 모델 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!

좋은 웹페이지 즐겨찾기