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;
}
}
단계 2Originator 클래스 를 만 듭 니 다.
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();
}
}
단계 3CareTaker 클래스 를 만 듭 니 다.
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);
}
}
단계 4CareTaker 와 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 비망록 모델 에 관 한 자 료 는 저희 의 다른 관련 글 을 주목 해 주 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.