畢設(shè)做網(wǎng)站答辯會要求當場演示嗎最基本的網(wǎng)站設(shè)計
????????備忘錄模式是一種行為型設(shè)計模式,用于在不破壞封裝性的前提下捕獲一個對象的內(nèi)部狀態(tài),并在該對象之外保存這個狀態(tài),以便之后可以將該對象恢復到之前的狀態(tài)。這種模式通常用于需要記錄對象狀態(tài)歷史、撤銷操作或?qū)崿F(xiàn)“回到過去”功能的場景。
在備忘錄模式中,主要有三種角色:
① 備忘錄(Memento):負責存儲原發(fā)器(Originator)對象的內(nèi)部狀態(tài)。備忘錄可以根據(jù)原發(fā)器提供的接口,獲取狀態(tài)或者恢復狀態(tài)。
② 原發(fā)器(Originator):負責創(chuàng)建備忘錄,并記錄當前內(nèi)部狀態(tài)到備忘錄中,或者從備忘錄中恢復狀態(tài)。
③ 管理者(Caretaker):負責保存?zhèn)渫泴ο?#xff0c;但是不能對備忘錄的內(nèi)容進行操作或者檢查。
備忘錄模式可以讓對象在不暴露其實現(xiàn)細節(jié)的情況下,保存和恢復其內(nèi)部狀態(tài),從而提供了更好的封裝性和靈活性。
1、場景設(shè)計
實現(xiàn)場景:設(shè)計備忘錄、原發(fā)器、管理者,操作一個字符串的備忘與恢復。
2、C++實現(xiàn)
`Memento` 類代表備忘錄,`Originator` 類是原發(fā)器,負責創(chuàng)建備忘錄和恢復狀態(tài),`Caretaker` 類是管理者,負責保存?zhèn)渫洝T?`main` 函數(shù)中,我們演示了如何使用備忘錄模式來保存對象的狀態(tài),并在需要時恢復到之前的狀態(tài)。?
#include <iostream>
#include <string>// 備忘錄類
class Memento {private:std::string state;public:Memento(){}Memento(const std::string& s) : state(s) {}std::string getState() const {return state;}
};// 原發(fā)器類
class Originator {private:std::string state;public:void setState(const std::string& s) {state = s;}std::string getState() const {return state;}Memento createMemento() {return Memento(state);}void restoreFromMemento(const Memento& m) {state = m.getState();}
};// 管理者類
class Caretaker {private:Memento memento;public:void saveMemento(const Memento& m) {memento = m;}Memento retrieveMemento() const {return memento;}
};int main() {Originator originator;Caretaker caretaker;// 設(shè)置初始狀態(tài)originator.setState("State 1");std::cout << "Current state: " << originator.getState() << std::endl;// 創(chuàng)建備忘錄并保存caretaker.saveMemento(originator.createMemento());// 修改狀態(tài)originator.setState("State 2");std::cout << "Current state: " << originator.getState() << std::endl;// 恢復到之前的狀態(tài)originator.restoreFromMemento(caretaker.retrieveMemento());std::cout << "Restored state: " << originator.getState() << std::endl;return 0;
}
3、Java實現(xiàn)
package behavioralpattern.memento;
// 備忘錄類
class Memento {private final String state;public Memento(String state) {this.state = state;}public String getState() {return state;}
}// 原發(fā)器類
class Originator {private String state;public void setState(String state) {this.state = state;}public String getState() {return state;}public Memento createMemento() {return new Memento(state);}public void restoreFromMemento(Memento memento) {state = memento.getState();}
}// 管理者類
class Caretaker {private Memento memento;public void saveMemento(Memento memento) {this.memento = memento;}public Memento retrieveMemento() {return memento;}
}public class MementoDemo {public static void main(String[] args) {Originator originator = new Originator();Caretaker caretaker = new Caretaker();// 設(shè)置初始狀態(tài)originator.setState("State 1");System.out.println("Current state: " + originator.getState());// 創(chuàng)建備忘錄并保存caretaker.saveMemento(originator.createMemento());// 修改狀態(tài)originator.setState("State 2");System.out.println("Current state: " + originator.getState());// 恢復到之前的狀態(tài)originator.restoreFromMemento(caretaker.retrieveMemento());System.out.println("Restored state: " + originator.getState());}
}
`Memento` 類代表備忘錄,`Originator` 類是原發(fā)器,負責創(chuàng)建備忘錄和恢復狀態(tài),`Caretaker` 類是管理者,負責保存?zhèn)渫?。?`main` 方法中,我們演示了如何使用備忘錄模式來保存對象的狀態(tài),并在需要時恢復到之前的狀態(tài)。