当前位置: 代码迷 >> 综合 >> [C++]备忘录模式
  详细解决方案

[C++]备忘录模式

热度:53   发布时间:2024-02-27 19:44:36.0

备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。

// 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//// 参考大话设计模式#include <iostream>using namespace std;class Player {
public:void SetCurrentState(int vitality, int attack, int defence) {vitality_ = vitality;attack_ = attack;defence_ = defence;}public:int vitality_ = 0;int attack_ = 0;int defence_ = 0;
};class Memento {
public:void GetPlayerState(Player* player) {player->vitality_ = player_->vitality_;player->attack_ = player_->attack_;player->defence_ = player_->defence_;}void SetPlayer(Player* player) {player_->vitality_ = player->vitality_;player_->attack_ = player->attack_;player_->defence_ = player->defence_;}public:Player* player_ = new Player();
};void print_player_state(Player* player) {printf("vitality: %d \n", player->vitality_);printf("attack: %d \n", player->attack_);printf("defence: %d \n", player->defence_);
}int main()
{// before pk bossPlayer* playerA = new Player();playerA->SetCurrentState(100, 100, 100);print_player_state(playerA);// mementoMemento* memento = new Memento();memento->SetPlayer(playerA);print_player_state(playerA);// after pk bossplayerA->SetCurrentState(0, 0, 0);print_player_state(playerA);// memento to playermemento->GetPlayerState(playerA);print_player_state(playerA);return 0;
}

 

  相关解决方案