模式简介
这个模式主要是为了保存对象在某个时态的特定状态,之后可以回复到特定的状态。核心有3个类,分别是:
Memento
:需要存储状态的对象Originator
:创建状态并存储的类CareTaker
:用于回复状态的类
实现方式
#include <iostream>
#include <vector>
#include <string>
#include <memory>
// 包含了要被恢复的对象的状态
class Memento {
public:
Memento(std::string state = "") {
m_strState = std::move(state);
}
Memento() = delete;
Memento(Memento&) = delete;
Memento(Memento&&) = delete;
std::string getState() const {
return m_strState;
}
private:
std::string m_strState;
};
// 创建并在Memento对象中存储状态
class Originator {
public:
void setState(std::string state) {
m_strState = std::move(state);
}
std::string getState() const {
return m_strState;
}
std::shared_ptr<Memento> saveStateToMemento() {
return std::make_shared<Memento>();
}
private:
std::string m_strState;
};
// 负责从Memento中恢复对象的状态
class CareTaker {
public:
void add(std::shared_ptr<Memento> state) {
m_vecMemento.emplace_back(std::move(state));
}
std::shared_ptr<Memento> get(int index) {
return m_vecMemento[index];
}
private:
std::vector<std::shared_ptr<Memento>> m_vecMemento;
};
int main() {
return 0;
}