中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

樂山網(wǎng)站建設(shè)公司什么是seo?

樂山網(wǎng)站建設(shè)公司,什么是seo?,旺旺食品有限公司網(wǎng)頁設(shè)計(jì),深圳做網(wǎng)站推廣文章目錄 一.什么是備忘錄設(shè)計(jì)模式?二.備忘錄模式的特點(diǎn)三.備忘錄模式的結(jié)構(gòu)四.備忘錄模式的優(yōu)缺點(diǎn)五.備忘錄模式的 C 實(shí)現(xiàn)六.備忘錄模式的 Java 實(shí)現(xiàn)七.總結(jié) 類圖: 備忘錄設(shè)計(jì)模式類圖 一.什么是備忘錄設(shè)計(jì)模式? 備忘錄設(shè)計(jì)模式&#xff08…

文章目錄

  • 一.什么是備忘錄設(shè)計(jì)模式?
  • 二.備忘錄模式的特點(diǎn)
  • 三.備忘錄模式的結(jié)構(gòu)
  • 四.備忘錄模式的優(yōu)缺點(diǎn)
  • 五.備忘錄模式的 C++ 實(shí)現(xiàn)
  • 六.備忘錄模式的 Java 實(shí)現(xiàn)
  • 七.總結(jié)

類圖: 備忘錄設(shè)計(jì)模式類圖

一.什么是備忘錄設(shè)計(jì)模式?

?備忘錄設(shè)計(jì)模式(Memento Pattern)是一種行為型設(shè)計(jì)模式,用于在不暴露對象實(shí)現(xiàn)細(xì)節(jié)的前提下,捕獲并保存對象在某一時刻的狀態(tài),以便之后可以將其恢復(fù)到之前的狀態(tài)。該模式的主要目標(biāo)是保存對象的狀態(tài)并在需要時進(jìn)行狀態(tài)回滾。

二.備忘錄模式的特點(diǎn)

  1. 封裝狀態(tài):將對象的內(nèi)部狀態(tài)存儲在備忘錄中,并且不讓外部訪問這些狀態(tài)細(xì)節(jié)。
  2. 提供撤銷功能:支持撤銷操作,特別適合需要恢復(fù)到之前狀態(tài)的場景。
  3. 降低耦合:發(fā)起者(Originator)與管理備忘錄的角色(Caretaker)解耦。

三.備忘錄模式的結(jié)構(gòu)

  1. Originator(發(fā)起者):負(fù)責(zé)創(chuàng)建備忘錄并恢復(fù)自身狀態(tài)。
  2. Memento(備忘錄):存儲發(fā)起者的狀態(tài)。
  3. Caretaker(管理者):負(fù)責(zé)保存和恢復(fù)備忘錄。
    在這里插入圖片描述

四.備忘錄模式的優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):
    • 提供了一種狀態(tài)恢復(fù)機(jī)制。
    • 發(fā)起者的內(nèi)部狀態(tài)對外部透明。
  • 缺點(diǎn):
    • 可能需要大量的存儲空間,尤其是需要存儲大量狀態(tài)時。
    • 如果對象狀態(tài)過于復(fù)雜,可能會增加備忘錄的維護(hù)成本。

五.備忘錄模式的 C++ 實(shí)現(xiàn)

#include <iostream>
#include <string>
#include <vector>
using namespace std;// 備忘錄類
class Memento {
private:string state;
public:Memento(const string& s) : state(s) {}string GetState() const { return state; }
};// 發(fā)起者類
class Originator {
private:string state;
public:void SetState(const string& s) {state = s;cout << "Set state to: " << state << endl;}string GetState() const { return state; }Memento* CreateMemento() const {return new Memento(state);}void SetMemento(Memento* memento) {state = memento->GetState();cout << "Restored state to: " << state << endl;}
};// 管理者類
class Caretaker {
private:vector<Memento*> mementos;
public:void SaveMemento(Memento* memento) {mementos.push_back(memento);}Memento* GetMemento(int index) const {if (index >= 0 && index < mementos.size()) {return mementos[index];}return nullptr;}~Caretaker() {for (Memento* m : mementos) {delete m;}}
};int main() {Originator originator;Caretaker caretaker;originator.SetState("State1");caretaker.SaveMemento(originator.CreateMemento());originator.SetState("State2");caretaker.SaveMemento(originator.CreateMemento());originator.SetState("State3");// 恢復(fù)到之前的狀態(tài)originator.SetMemento(caretaker.GetMemento(0));originator.SetMemento(caretaker.GetMemento(1));return 0;
}

六.備忘錄模式的 Java 實(shí)現(xiàn)

import java.util.ArrayList;
import java.util.List;// 備忘錄類
class Memento {private 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;System.out.println("Set state to: " + state);}public String getState() {return state;}public Memento createMemento() {return new Memento(state);}public void setMemento(Memento memento) {this.state = memento.getState();System.out.println("Restored state to: " + state);}
}// 管理者類
class Caretaker {private List<Memento> mementos = new ArrayList<>();public void saveMemento(Memento memento) {mementos.add(memento);}public Memento getMemento(int index) {if (index >= 0 && index < mementos.size()) {return mementos.get(index);}return null;}
}public class MementoPatternDemo {public static void main(String[] args) {Originator originator = new Originator();Caretaker caretaker = new Caretaker();originator.setState("State1");caretaker.saveMemento(originator.createMemento());originator.setState("State2");caretaker.saveMemento(originator.createMemento());originator.setState("State3");// 恢復(fù)到之前的狀態(tài)originator.setMemento(caretaker.getMemento(0));originator.setMemento(caretaker.getMemento(1));}
}

七.總結(jié)

?備忘錄設(shè)計(jì)模式適用于需要保存對象狀態(tài)并提供恢復(fù)功能的場景,比如文本編輯器、游戲存檔等。通過將狀態(tài)封裝到備忘錄中,備忘錄模式實(shí)現(xiàn)了狀態(tài)的透明保存與恢復(fù),從而提升了系統(tǒng)的可維護(hù)性和靈活性。
應(yīng)用場景:

  1. 文本編輯器:保存編輯狀態(tài),支持撤銷和恢復(fù)操作。
  2. 游戲存檔:保存玩家的游戲進(jìn)度,并允許玩家恢復(fù)到之前的狀態(tài)。
  3. 事務(wù)管理:數(shù)據(jù)庫事務(wù)可以利用備忘錄模式保存數(shù)據(jù)狀態(tài),實(shí)現(xiàn)事務(wù)回滾。
http://www.risenshineclean.com/news/28827.html

相關(guān)文章:

  • 做黨建網(wǎng)站百度教育網(wǎng)站
  • 杭州做網(wǎng)站 做小程序?qū)W生個人網(wǎng)頁制作教程
  • 韶關(guān)市建設(shè)工程造價網(wǎng)站百度指數(shù)代表什么
  • 網(wǎng)站建設(shè)設(shè)計(jì)作業(yè)百度競價排名推廣
  • 做網(wǎng)站gif代碼名優(yōu)網(wǎng)站關(guān)鍵詞優(yōu)化
  • wordpress 伊拉克防木馬seo排名優(yōu)化推廣報價
  • 公司網(wǎng)站維護(hù)都需要怎么做旅行網(wǎng)站排名前十名
  • 網(wǎng)站流量站怎么做品牌整合營銷
  • 網(wǎng)站開發(fā)主管待遇網(wǎng)絡(luò)營銷專業(yè)好就業(yè)嗎
  • 簡潔大方網(wǎng)站建設(shè)昆山網(wǎng)站建設(shè)推廣
  • 設(shè)計(jì)公司網(wǎng)站案例廣東網(wǎng)站seo策劃
  • joomla 網(wǎng)站建設(shè)上海網(wǎng)絡(luò)推廣外包
  • 動靜分離網(wǎng)站架構(gòu)sem競價外包公司
  • 徐州哪家公司做網(wǎng)站水平好如何制作一個網(wǎng)頁頁面
  • 那個網(wǎng)站做搬家推廣比較好重慶森林講的什么內(nèi)容
  • 靠比較好的軟件下載網(wǎng)站社交媒體營銷三種方式
  • 用bootstrap做的手機(jī)推銷網(wǎng)站模板如何在百度上發(fā)表文章
  • 做淘客網(wǎng)站要備案網(wǎng)絡(luò)廣告人社區(qū)
  • 佛山專業(yè)的網(wǎng)站制作怎么做公司網(wǎng)站推廣
  • 腐女做喜歡的網(wǎng)站做銷售記住這十句口訣
  • 哪些網(wǎng)站可以做簽約設(shè)計(jì)師在線crm網(wǎng)站建站
  • wix建設(shè)網(wǎng)站鏈接交換平臺
  • 淘寶客做網(wǎng)站教程網(wǎng)站注冊信息查詢
  • 建設(shè)網(wǎng)站的方案抖音競價推廣怎么做
  • 兼職做ps網(wǎng)站百度網(wǎng)盤搜索引擎網(wǎng)站
  • wordpress 所有鉤子商丘seo公司
  • 大型的網(wǎng)站開發(fā)crm系統(tǒng)網(wǎng)站
  • 免費(fèi)網(wǎng)站制作效果百度一下你就知道123
  • 邯鄲做移動網(wǎng)站費(fèi)用seo專業(yè)論壇
  • 網(wǎng)站網(wǎng)速慢刷百度關(guān)鍵詞排名