메멘토 패턴: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
새 문서: '''메멘토 패턴'''(memento pattern)은 객체를 이전 상태로 되돌릴 수 있는 기능을 제공하는 소프트웨어 디자인 패턴이다. (롤백을 통한 실...
 
TedBot (토론 | 기여)
잔글 봇: 틀 이름 및 스타일 정리
6번째 줄:
 
== 개요 ==
메멘토<ref name="GoF">{{cite서적 book인용|author=Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides|title=Design Patterns: Elements of Reusable Object-Oriented Software|year=1994|publisher=Addison Wesley|isbn=0-201-63361-2|pages=283ff}}</ref> 디자인 패턴은 유연하고 재사용 가능한 객체 지향 소프트웨어를 설계하기 위해 반복되는 디자인 문제를 해결하는 방법, 즉 객체는 구현, 변경, 테스트, 재사용이 쉬워야 한다는 것을 기술하는, 잘 알려진 23가지 [[디자인 패턴 (책)|GoF 디자인 패턴]]들 중 하나이다.
 
== 구조 ==
=== UML 클래스 및 시퀀스 다이어그램 ===
[[File파일:w3sDesign Memento Design Pattern UML.jpg|frame|none|메멘토 디자인 패턴을 위한 샘플 UML 클래스와 시퀀스 다이어그램. <ref>{{cite web인용|title=The Memento design pattern - Structure and Collaboration|url=http://w3sdesign.com/?gr=b06&ugr=struct|website=w3sDesign.com|accessdate=2017-08-12}}</ref>]]
 
== 예시 ==
21번째 줄:
// The class could also contain additional data that is not part of the
// state saved in the memento..
 
public void set(String state) {
this.state = state;
System.out.println("Originator: Setting state to " + state);
}
 
public Memento saveToMemento() {
System.out.println("Originator: Saving to Memento.");
return new Memento(this.state);
}
 
public void restoreFromMemento(Memento memento) {
this.state = memento.getSavedState();
System.out.println("Originator: State after restoring from Memento: " + state);
}
 
public static class Memento {
private final String state;
43번째 줄:
state = stateToSave;
}
 
// accessible by outer class only
private String getSavedState() {
50번째 줄:
}
}
 
class Caretaker {
public static void main(String[] args) {
List<Originator.Memento> savedStates = new ArrayList<Originator.Memento>();
 
Originator originator = new Originator();
originator.set("State1");
63번째 줄:
savedStates.add(originator.saveToMemento());
originator.set("State4");
 
originator.restoreFromMemento(savedStates.get(1));
}
}