保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。
大家都见过,历史记录这玩意就是备忘录模式
class Browser {
constructor() {
this.fallBackNumber = 2
this.address = ''
this.memoryCareTaker = new MemoryCareTaker()
}
setAddress(address) {
this.address = address
this.memoryCareTaker.add(this.setAddressToMemory())
if(this.fallBackNumber !== 2) this.fallBackNumber = 2
console.log('当前:', this.address)
}
getAddress(address) {
return this.address
}
setAddressToMemory() {
return new Memory(this.address)
}
getAddressFromMemory(memory) {
this.content = memory.getContent()
}
fallBack() {
const lg = this.memoryCareTaker.getLength()
this.address = this
.memoryCareTaker
.get(lg-(this.fallBackNumber++))
.getContent()
console.log('退后到:', this.getAddress())
}
}
class Memory {
constructor(content) {
this.content = content
console.log('记录:', this.content)
}
getContent() {
return this.content
}
}
class MemoryCareTaker {
constructor() {
this.memoryList = []
}
add(memory) {
this.memoryList.push(memory)
}
get(index) {
return this.memoryList[index]
}
getLength() {
return this.memoryList.length
}
}
const browser = new Browser()
browser.setAddress('www.baidu.com')
browser.setAddress('www.bilibili.com')
browser.setAddress('juejin.im/timeline')
browser.fallBack()
browser.fallBack()
browser.setAddress('www.bilibili.com')
browser.fallBack()
browser.fallBack()
/**
* 打印的值为:
* 记录: www.baidu.com
* 当前: www.baidu.com
* 记录: www.bilibili.com
* 当前: www.bilibili.com
* 记录: juejin.im/timeline
* 当前: juejin.im/timeline
* 退后到: www.bilibili.com
* 退后到: www.baidu.com
* 记录: www.bilibili.com
* 当前: www.bilibili.com
* 退后到: juejin.im/timeline
* 退后到: www.bilibili.com
*/