成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Memento模式(存檔點(diǎn)模式)-創(chuàng)新互聯(lián)

模式簡(jiǎn)介

Memento模式用于記錄存檔點(diǎn),然后可以通過加載存檔點(diǎn)回溯到指定的存檔或狀態(tài)。

成都創(chuàng)新互聯(lián)公司專業(yè)提供電信機(jī)房托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買電信機(jī)房托管服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。模式UML圖

代碼示例(C#)

提示:文本內(nèi)容存儲(chǔ)在.txt文件中,所以v_textPath常量記錄的是你的.txt文件路徑;文本操作命令存儲(chǔ)在.json文件中,所以v_paramsPath常量記錄的是你的.json文件路徑;你需要將二者更換為你所運(yùn)行本機(jī)的相應(yīng)文件路徑;由于該模式代碼與Iterator模式和Command模式代碼存在聯(lián)動(dòng),故無法單獨(dú)運(yùn)行,若需要運(yùn)行,請(qǐng)自行復(fù)制本欄目下Iterator模式和Command模式的示例代碼,或者從本欄目的資源篇“設(shè)計(jì)模式代碼示例合集”下載所有完整代碼資源。

using System.IO;
using System.Text.Json;

namespace Test1
{
    //文本和文本操作命令的存儲(chǔ)與加載功能的具體實(shí)現(xiàn)類
    public class CommandChainManager : IMemento
    {
        private const string v_textPath = @"D:\Study\StudyNotes\Gamemade notes\ProgramPractice\Test1\源文件\Datas\data.txt";
        private const string v_paramsPath = @"D:\Study\StudyNotes\Gamemade notes\ProgramPractice\Test1\源文件\Datas\params.json";
        public void LoadCommand(ref CommandChain p_commandChain)
        {
            string v_jsonStr = "";
            using (StreamReader sr = File.OpenText(v_paramsPath))
            {
                v_jsonStr = sr.ReadToEnd();
            }
            var options = new JsonSerializerOptions
            {
                IncludeFields = true
            };
            CSFParameter[][] parameters = JsonSerializer.Deserialize(v_jsonStr, options);
            p_commandChain.parameters.Clear();
            foreach (CSFParameter[] param in parameters)
            {
                p_commandChain.parameters.Add(param);
            }
        }

        public void LoadText(ref string p_text)
        {
            using (StreamReader sr = File.OpenText(v_textPath))
            {
                p_text = sr.ReadToEnd();
            }
        }

        public void SaveCommands(CommandChain p_commandChain)
        {
            var options = new JsonSerializerOptions
            {
                IncludeFields = true
            };
            string v_jsonStr = JsonSerializer.Serialize(p_commandChain.parameters.ToArray(), options);
            File.WriteAllText(v_paramsPath, v_jsonStr);
        }

        public void SaveText(string p_text)
        {
            File.WriteAllText(v_textPath, p_text);
        }
    }

    //實(shí)現(xiàn)文本和文本操作命令存儲(chǔ)與加載的接口
    public interface IMemento
    {
        public void SaveText(string p_text);
        public void LoadText(ref string p_text);
        public void SaveCommands(CommandChain p_commandChain);
        public void LoadCommand(ref CommandChain p_commandChain);
    }
}
代碼解說

結(jié)合Command模式,我們對(duì)一個(gè)文本編輯器進(jìn)行了簡(jiǎn)單的模擬,我們可以添加、刪除、復(fù)制文本,同時(shí)還可以存儲(chǔ)和加載命令狀態(tài)。這個(gè)命令狀態(tài)存儲(chǔ)比較特殊,存儲(chǔ)數(shù)據(jù)會(huì)覆蓋當(dāng)前的命令及其狀態(tài),這說明我們既保存了文本也保存了對(duì)文本的操作命令,當(dāng)我們重新加載后文本和當(dāng)時(shí)相關(guān)的操作命令都會(huì)一起恢復(fù)。文本則是以.txt文件進(jìn)行保存的,而文本操作命令則是以.json文件進(jìn)行保存的。

如果這篇文章對(duì)你有幫助,請(qǐng)給作者點(diǎn)個(gè)贊吧!

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

本文名稱:Memento模式(存檔點(diǎn)模式)-創(chuàng)新互聯(lián)
本文來源:http://jinyejixie.com/article10/dpejgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃微信小程序、網(wǎng)站導(dǎo)航、商城網(wǎng)站品牌網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
泰州市| 凤山市| 闽侯县| 库车县| 绥化市| 丰镇市| 台州市| 巢湖市| 东光县| 嘉义市| 徐闻县| 富锦市| 花莲县| 秭归县| 东乌| 富民县| 增城市| 藁城市| 贡觉县| 图们市| 丰宁| 山东省| 宜川县| 大城县| 将乐县| 晋江市| 潜江市| 海晏县| 原平市| 佳木斯市| 临清市| 乐山市| 合阳县| 延长县| 大邑县| 武宣县| 防城港市| 竹溪县| 婺源县| 临漳县| 青海省|