Java 디자인 모드의 메모 모드
4006 단어 Java 디자인 모드
Java 디자인 모드의 메모 모드
전언
비망록 모델은 소프트웨어 시스템의'달빛 보물함'으로 대상 상태의 취소 실현 메커니즘을 제공하여 시스템 중의 특정한 대상이 특정한 역사 상태로 회복되어야 할 때 비망록 모델로 설계할 수 있다.
본문
정의
정의는 다음과 같다. 비망록 모드: 봉인을 파괴하지 않는 전제에서 대상의 내부 상태를 포획하고 그 대상 이외에 이 상태를 저장하면 나중에 대상을 원래 저장한 상태로 회복할 수 있다.Memento Pattern: Without violating encapsulation, capture and externalize an object’s internal state so that the object can be restored to this state later.
비망록 모델은 대상 행위형 모델로 그 별명은 표기(Token) 모델이다.
구조
비망록 모드에는 세 가지 역할이 포함된다. (1) Originator(원발기): 원발기는 일반적인 클래스로 비망록을 만들어서 현재 내부 상태를 저장하거나 비망록을 사용하여 내부 상태를 회복할 수 있다. 일반적으로 시스템에 내부 상태를 저장해야 하는 클래스를 원발기로 설계한다.(2) Memento(비망록): 비망록은 원발기의 내부 상태를 저장하는 데 사용되며, 원발기에 따라 어떤 내부 상태를 저장할지 결정한다.비망록의 디자인은 일반적으로 원발기의 디자인을 참고하고 실제 수요에 따라 비망록류의 속성을 확정할 수 있다.주의해야 할 것은 원발기 자체와 담당 인류를 제외하고 비망록 대상은 다른 종류에 직접 사용할 수 없기 때문에 원발기의 디자인은 서로 다른 프로그래밍 언어에서 실현 메커니즘이 다를 수 있다.(3) Caretaker(담당자): 담당자는 관리자라고도 하는데 비망록을 저장하는 것을 책임지지만 비망록의 내용을 조작하거나 검사할 수 없다.담당 인간에게 한 개 이상의 비망록 대상을 저장할 수 있다. 그것은 저장 대상만 책임지고 대상을 수정할 수 없으며 대상의 실현 세부 사항도 알 필요가 없다.
이루다
원발기의 전형적인 코드는 다음과 같다.public class Originator{
private String state;
public Originator(String state){
this.state = state;
}
//
public Memento createMemento(){
return new Memento(this);
}
//
public void restoreMemento(Memento m){
state = m.state;
}
public void setState(String state){
this.state = state;
}
public String getState(){
return this.state;
}
}
일반적인 의사록 코드는 다음과 같습니다.// , ,
class Memento{
private String state;
public Memento(Originator o){
state = o.getState();
}
public void setState(String state){
this.state = state;
}
public String getState(){
return this.state;
}
}
자바를 사용하여 비망록 모드를 실현할 때 일반적으로 Memento 클래스와 Originator 클래스를 같은 패키지 (package) 에 정의함으로써 봉인을 실현하고 기본 접근 식별자를 사용하여 Memento 클래스를 정의할 수 있으며, 즉 가방 안에 볼 수 있도록 한다.Originator 클래스만 Memento에 액세스할 수 있으며 다른 클래스는 Memento에 액세스할 수 없습니다.
이외에도 비망록류를 원발기류의 내부류로 삼아 상술한 목적을 달성할 수 있다.
전형적인 인간 담당 코드는 다음과 같다.public class Caretaker{
private Memento memento;
public Memento getMemento(){
return memento;
}
public void setMemento(Memento memento){
this.memento = memento;
}
}
Caretaker 클래스에서 Memento의 상태 변화 방법을 직접 호출해서는 안 된다. 그 역할은 비망록 저장 대상일 뿐이다.원발기 백업으로 생성된 비망록 대상을 그 안에 저장하고 사용자가 원발기를 복구해야 할 때 그 안에 저장된 비망록 대상을 꺼냅니다.클라이언트 데모 코드는 다음과 같습니다.public class Client{
public static void main(String args[]){
//
Originator ori = new Originator(" (1)");
System.out.println(ori.getState());
// ,
Caretaker ct = new Caretaker();
ct.setMemento(ori.createMemento());
ori.setState(" (2)");
System.out.println(ori.getState());
// ,
ori.restoreMemento(ct.getMemento());
System.out.println(ori.getState());
}
}
4. 여러 차례 철회 실현
여러 차례 취소된 해결 방안은 인류 중에서 하나의 집합을 정의하여 여러 개의 비망록을 저장하는 것이다. 각 비망록은 하나의 역사 상태를 보존하고 취소할 때 비망록 집합을 역방향으로 훑어보고 지정된 역사 상태로 돌아갈 수 있으며 비망록 집합을 정방향으로 훑어보고 재실행(Redo)이나 복구 작업을 실현할 수 있다. 즉, 취소를 취소하고 대상의 상태를 회복할 수 있다.
5. 비망록의 장단점과 적용 환경
장점
(1) 상태 회복의 실현 메커니즘을 제공하여 사용자가 특정한 역사 단계로 쉽게 돌아갈 수 있도록 하고 새로운 상태가 무효하거나 문제가 존재할 때 잠시 저장된 비망록을 사용하여 상태를 복원할 수 있다.(2) 비망록은 정보에 대한 봉인을 실현했고 하나의 비망록 대상은 원발기 대상 상태의 표시로 다른 코드에 의해 변경되지 않는다.비망록은 원발기의 상태를 저장하고 목록, 창고 등 집합을 이용하여 비망록 대상을 저장하면 여러 번의 취소 작업을 실현할 수 있다.
결점
자원의 소모가 너무 크다. 만약에 보존해야 하는 원발기류의 구성원 변수가 너무 많으면 대량의 저장 공간을 차지하는 것을 피할 수 없다. 매번 대상의 상태를 보존할 때마다 일정한 시스템 자원을 소모해야 한다.
적용 환경
(1) 나중에 필요할 때 이전 상태로 되돌려 취소할 수 있도록 객체의 모든 상태나 상태를 저장합니다.(2) 외부 대상이 한 대상의 역사 상태의 봉인성을 파괴하는 것을 방지하고 대상의 역사 상태의 실현 세부 사항을 외부 대상에게 노출하는 것을 피한다.
상기 문자는 이라는 책에서 대량으로 발췌한 것으로 류웨이 선생님이 저술한 것이기 때문에 본고는 전재류에 넣어야 한다. 관심 있는 친구는 원서를 직접 읽을 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 디자인 모드 - 플랜트 메소드 모드(2)
공장 방법 모델은 공장 모델로 약칭하여 창설형 모델의 일종에 속한다.
공장 방법 모델에서 공장 부류는 제품 대상의 공공 인터페이스를 만들고 공장 부류는 구체적인 제품 대상을 생성한다.공장 부류에서 제품류의 실례화 조...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
정의
정의는 다음과 같다. 비망록 모드: 봉인을 파괴하지 않는 전제에서 대상의 내부 상태를 포획하고 그 대상 이외에 이 상태를 저장하면 나중에 대상을 원래 저장한 상태로 회복할 수 있다.Memento Pattern: Without violating encapsulation, capture and externalize an object’s internal state so that the object can be restored to this state later.
비망록 모델은 대상 행위형 모델로 그 별명은 표기(Token) 모델이다.
구조
비망록 모드에는 세 가지 역할이 포함된다. (1) Originator(원발기): 원발기는 일반적인 클래스로 비망록을 만들어서 현재 내부 상태를 저장하거나 비망록을 사용하여 내부 상태를 회복할 수 있다. 일반적으로 시스템에 내부 상태를 저장해야 하는 클래스를 원발기로 설계한다.(2) Memento(비망록): 비망록은 원발기의 내부 상태를 저장하는 데 사용되며, 원발기에 따라 어떤 내부 상태를 저장할지 결정한다.비망록의 디자인은 일반적으로 원발기의 디자인을 참고하고 실제 수요에 따라 비망록류의 속성을 확정할 수 있다.주의해야 할 것은 원발기 자체와 담당 인류를 제외하고 비망록 대상은 다른 종류에 직접 사용할 수 없기 때문에 원발기의 디자인은 서로 다른 프로그래밍 언어에서 실현 메커니즘이 다를 수 있다.(3) Caretaker(담당자): 담당자는 관리자라고도 하는데 비망록을 저장하는 것을 책임지지만 비망록의 내용을 조작하거나 검사할 수 없다.담당 인간에게 한 개 이상의 비망록 대상을 저장할 수 있다. 그것은 저장 대상만 책임지고 대상을 수정할 수 없으며 대상의 실현 세부 사항도 알 필요가 없다.
이루다
원발기의 전형적인 코드는 다음과 같다.
public class Originator{
private String state;
public Originator(String state){
this.state = state;
}
//
public Memento createMemento(){
return new Memento(this);
}
//
public void restoreMemento(Memento m){
state = m.state;
}
public void setState(String state){
this.state = state;
}
public String getState(){
return this.state;
}
}
일반적인 의사록 코드는 다음과 같습니다.
// , ,
class Memento{
private String state;
public Memento(Originator o){
state = o.getState();
}
public void setState(String state){
this.state = state;
}
public String getState(){
return this.state;
}
}
자바를 사용하여 비망록 모드를 실현할 때 일반적으로 Memento 클래스와 Originator 클래스를 같은 패키지 (package) 에 정의함으로써 봉인을 실현하고 기본 접근 식별자를 사용하여 Memento 클래스를 정의할 수 있으며, 즉 가방 안에 볼 수 있도록 한다.Originator 클래스만 Memento에 액세스할 수 있으며 다른 클래스는 Memento에 액세스할 수 없습니다.
이외에도 비망록류를 원발기류의 내부류로 삼아 상술한 목적을 달성할 수 있다.
전형적인 인간 담당 코드는 다음과 같다.
public class Caretaker{
private Memento memento;
public Memento getMemento(){
return memento;
}
public void setMemento(Memento memento){
this.memento = memento;
}
}
Caretaker 클래스에서 Memento의 상태 변화 방법을 직접 호출해서는 안 된다. 그 역할은 비망록 저장 대상일 뿐이다.원발기 백업으로 생성된 비망록 대상을 그 안에 저장하고 사용자가 원발기를 복구해야 할 때 그 안에 저장된 비망록 대상을 꺼냅니다.클라이언트 데모 코드는 다음과 같습니다.
public class Client{
public static void main(String args[]){
//
Originator ori = new Originator(" (1)");
System.out.println(ori.getState());
// ,
Caretaker ct = new Caretaker();
ct.setMemento(ori.createMemento());
ori.setState(" (2)");
System.out.println(ori.getState());
// ,
ori.restoreMemento(ct.getMemento());
System.out.println(ori.getState());
}
}
4. 여러 차례 철회 실현
여러 차례 취소된 해결 방안은 인류 중에서 하나의 집합을 정의하여 여러 개의 비망록을 저장하는 것이다. 각 비망록은 하나의 역사 상태를 보존하고 취소할 때 비망록 집합을 역방향으로 훑어보고 지정된 역사 상태로 돌아갈 수 있으며 비망록 집합을 정방향으로 훑어보고 재실행(Redo)이나 복구 작업을 실현할 수 있다. 즉, 취소를 취소하고 대상의 상태를 회복할 수 있다.
5. 비망록의 장단점과 적용 환경
장점
(1) 상태 회복의 실현 메커니즘을 제공하여 사용자가 특정한 역사 단계로 쉽게 돌아갈 수 있도록 하고 새로운 상태가 무효하거나 문제가 존재할 때 잠시 저장된 비망록을 사용하여 상태를 복원할 수 있다.(2) 비망록은 정보에 대한 봉인을 실현했고 하나의 비망록 대상은 원발기 대상 상태의 표시로 다른 코드에 의해 변경되지 않는다.비망록은 원발기의 상태를 저장하고 목록, 창고 등 집합을 이용하여 비망록 대상을 저장하면 여러 번의 취소 작업을 실현할 수 있다.
결점
자원의 소모가 너무 크다. 만약에 보존해야 하는 원발기류의 구성원 변수가 너무 많으면 대량의 저장 공간을 차지하는 것을 피할 수 없다. 매번 대상의 상태를 보존할 때마다 일정한 시스템 자원을 소모해야 한다.
적용 환경
(1) 나중에 필요할 때 이전 상태로 되돌려 취소할 수 있도록 객체의 모든 상태나 상태를 저장합니다.(2) 외부 대상이 한 대상의 역사 상태의 봉인성을 파괴하는 것을 방지하고 대상의 역사 상태의 실현 세부 사항을 외부 대상에게 노출하는 것을 피한다.
상기 문자는 이라는 책에서 대량으로 발췌한 것으로 류웨이 선생님이 저술한 것이기 때문에 본고는 전재류에 넣어야 한다. 관심 있는 친구는 원서를 직접 읽을 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 디자인 모드 - 플랜트 메소드 모드(2)공장 방법 모델은 공장 모델로 약칭하여 창설형 모델의 일종에 속한다. 공장 방법 모델에서 공장 부류는 제품 대상의 공공 인터페이스를 만들고 공장 부류는 구체적인 제품 대상을 생성한다.공장 부류에서 제품류의 실례화 조...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.