[kotlin] 메멘토 디자인 패턴과 코틀린
1. 메멘토 디자인 패턴
메멘토 디자인 패턴은 객체의 내부 상태를 캡슐화하여 이후에 상태를 복구할 수 있게 하는 행위 패턴 중 하나이다. 이 패턴은 객체의 상태를 저장하고 필요에 따라 복원할 수 있는 기능을 제공하여, 상태의 변화를 추적하거나 원하는 시점으로 돌아갈 수 있는 기능을 구현하는 데 유용하다.
메멘토 디자인 패턴은 주로 Originator
객체(원본 객체)와 Memento
객체(상태를 저장하는 객체) 그리고 Caretaker
객체(상태를 관리하는 객체)로 구성된다. Originator
는 자신의 상태를 저장하거나 복원하기 위해 Memento
를 생성하거나 사용하며, Caretaker
는 Memento
를 관리하고 필요에 따라 Originator
에게 상태를 복원할 것을 요청한다.
2. 코틀린에서의 메멘토 패턴 구현
코틀린에서 메멘토 패턴을 구현하는 방법은 data class
를 사용하여 간단하게 상태를 저장하고 복원할 수 있다. 아래는 메멘토 패턴을 코틀린으로 구현한 예시이다.
// Originator
data class Originator(var state: String) {
fun createMemento(): Memento {
return Memento(state)
}
fun restore(memento: Memento) {
state = memento.state
}
}
// Memento
data class Memento(val state: String)
// Caretaker
class Caretaker {
private val mementos = mutableListOf<Memento>()
fun addMemento(memento: Memento) {
mementos.add(memento)
}
fun getMemento(index: Int): Memento {
return mementos[index]
}
}
위의 예시에서 Originator
는 상태를 저장하거나 복원하기 위해 Memento
를 생성한 후 Caretaker
에게 상태를 복원할 것을 요청한다. Caretaker
는 Memento
를 관리하고 필요에 따라 Originator
에게 상태를 복원할 수 있도록 기능을 제공한다.
이렇게 코틀린에서는 간단하게 메멘토 패턴을 구현할 수 있으며, 객체의 상태를 저장하고 복원하는 기능을 구현할 때 유용하게 활용할 수 있다.