目录

行为型:备忘录模式

释义

备忘录模式,存储对象状态,在需要时恢复。

/%E8%A1%8C%E4%B8%BA%E5%9E%8B%E5%A4%87%E5%BF%98%E5%BD%95%E6%A8%A1%E5%BC%8F/%E8%A1%8C%E4%B8%BA%E5%9E%8B%EF%BC%9A%E5%A4%87%E5%BF%98%E5%BD%95%E6%A8%A1%E5%BC%8F.resources/6C57C095-09E3-4289-B95E-6C8DB1412CBD.png
备忘录模式

基础类Origin将自身的状态打包成存储类Save存储到备忘录类Recover中。必要时,从Recover中获取Save来恢复Origin

基础类

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
class Origin (
    var state: String
) {
    // 将状态存入Save中,存储时用
    fun saveStateToSave(): Save {
        return object : Save(this.state)
    }
    
    // 从Save中读取状态,恢复时用
    fun getStateFromSave(save: Save) {
        state = Save.state
    }
}

存储类

1
2
3
data class Save(
    var state
)

备忘录类

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Recover(
    // 存储Save的列表
    val saves: MutableList<Save> = mutableListOf()
) {
    fun add(save: Save) {
        saves.add(save)
    }
    
    fun get(index: Int): Save {
        return saves.get(index)
    }
}

使用

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
fun main() {
    val state: String = "state"
    val origin: Origin = Origin(state)
    val recover: Recover = Recover()
    
    // 存储状态
    recover.add(origin.saveStateToSave)
    
    // 恢复状态
    var index = 0
    origin.getStateFromSave(recover.get(index))
    
}