메멘토 패턴 예제

기념품 패턴은 개체의 상태가 지속적으로 변경되고 응용 프로그램의 사용자가 언제든지 변경 내용을 롤백하거나 취소하기로 결정할 수 있는 모든 응용 프로그램에서 사용되어야 합니다. 롤백이 메커니즘은 기념품 디자인 패턴을 사용합니다. 데이터베이스 테이블을 나타내는 개체, 트랜잭션을 수행하는 트랜잭션 관리자 개체가 실패하거나 다른 작업을 실행 취소할 수 있는 기능을 유지하면서 테이블 개체에서 작업을 수행해야 하는 경우를 고려합니다. 테이블 개체가 실패합니다. 롤백할 수 있도록 트랜잭션 관리자 개체는 작업을 수행하기 전에 테이블 개체에 대한 기념품을 요청하므로 오류가 발생할 경우 기념품 개체를 사용하여 테이블을 이전 상태로 복원합니다. 기념품을 만든 발신자만 이 기념품에 액세스할 수 있습니다. 기념품은 클라이언트 응용 프로그램이 개체 상태를 해당 상태로 복원하는 데 사용할 수 있는 개체의 수명 주기 동안 복원 지점과 같습니다. 개념적으로, 그것은 매우 우리가 운영 체제에 대 한 복원 지점을 만들고 뭔가 중단 또는 시스템 충돌 하는 경우 시스템을 복원 하는 데 사용 처럼. 오래된 텔레비전의 경우이 과정은 증분될 것이므로 3에서 4에서 5까지 가야합니다. 그러나 일부 최신 TV에서는 즉시 이동할 값을 명시적으로 선택하여 한 단계에서 3에서 11로 변경할 수 있습니다.

에 관계없이, 이러한 기술은 모두 일반적으로 기념품 디자인 패턴 구현에 사용된다. 경우에 따라 취소 및 다시 수행은 가장 최근 상태를 대체 위치로 사용하여 증분 방식으로만 발생합니다. 다른 경우에는 아래에서 살펴볼 코드 구현과 마찬가지로 이전 상태로 되돌리는 순서에 따라 이전 상태로 되돌릴 수 있으므로 개정 기록에서 필요한 만큼 뒤로 이동할 수 있습니다. 기념품 디자인 패턴은 행동 패턴과 4의 갱에 의해 논의 된 23 디자인 패턴 중 하나입니다. 기념품 패턴은 개체의 상태를 이전 상태로 복원하는 데 사용됩니다. 스냅샷 패턴이라고도 합니다. 다음 Java 프로그램은 기념품 패턴의 “취소” 사용을 보여 줍니다. 위의 UML 클래스 다이어그램에서 관리인 클래스는 작성자(createMemento))) 및 복원(복원(memento)) 작성자의 내부 상태를 저장하기 위한 Originator 클래스를 나타냅니다.

Originator 클래스 구현 (1) createMemento() 생성 및 생성의 현재 내부 상태를 저장 하는 Memento 개체를 반환 하 고 (2) 복원 (memento) Memento 개체에서 전달 된 상태에서 상태를 복원 하 여. 중요한 방법은 CreateMemento() 및 SetMemento(기념품)입니다. 전자는 현재 _state 속성을 기반으로 새 Memento 인스턴스를 만들고 후자는 전달된 Memento 인수를 기반으로 _state 속성을 업데이트합니다. 거기 당신은 그것을 가지고! 이 기념품 디자인 패턴의 잠재적 인 힘에 대한 통찰력의 비트를 제공하고, 당신에게 당신이 가장 적합한 것 어디서나 그것을 구현하는 자신의 프로젝트에서 사용할 수있는 몇 가지 기본 도구를 제공 바랍니다. 다른 모든 인기있는 디자인 패턴에 대한 자세한 내용은 여기에서 진행 중인 디자인 패턴 시리즈를 참조하십시오! 관리인 개체의 주요 목적은 생성된 기념품의 역사적 목록을 저장하여 지금까지 존재했던 모든 상태 값을 효과적으로 포함하는 것입니다.