程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 解析C#設計形式編程中備忘錄形式的應用

解析C#設計形式編程中備忘錄形式的應用

編輯:C#入門知識

解析C#設計形式編程中備忘錄形式的應用。本站提示廣大學習愛好者:(解析C#設計形式編程中備忘錄形式的應用)文章只能為提供參考,不一定能成為您想要的結果。以下是解析C#設計形式編程中備忘錄形式的應用正文


1、概述

在軟件開辟中,有時須要保留一個對象的狀況,以便於許可用戶撤消相干操作或許從以往的狀況中恢復過去。好比一個文檔版本治理體系,可以依據須要將指定文檔恢復到之前保留過的隨意率性一個狀況。這時候便可以經由過程備忘錄形式來完成。

2、備忘錄形式

備忘錄形式可以在不損壞封裝性的條件下捕捉一個對象的外部狀況,並在該對象以外保留這個狀況。其構造圖以下:

https://www.aspphp.online/bianchen/UploadFiles_4619/201707/2017072810330353.jpg (581×192)

Memento用於保留Originator對象的外部狀況。
Originator創立Memento,並依據須要決議須要在Memento中保留那些狀況,同時還能從Memento中恢復外部狀況。
Caretaker擔任保留Memento對象,但纰謬Memento對象停止任何操作。
備忘錄形式用來保留與對象有關的數據,如許可以在未來對對象停止回復復興。例如在畫圖法式中須要保留對象的色彩尺寸等。

3、示例

我們我們就以文檔版本治理體系為例來引見備忘錄形式。

起首界說Originator,在這裡就是文檔自己。

public class Document
  {
    public string Content { get; set; }

    public DocumentVersion CreateMemento()
    {
      return new DocumentVersion( Content);
    }

    public void SetMemento(DocumentVersion documentVersion)
    {
      Content = documentVersion.Content;
    }
  }

接著界說Memento。

public class DocumentVersion
  {
    public string Content { get; set; }

    public DocumentVersion(string content)
    {
      Content = content;
    }
  }

最初界說Caretaker,經由過程一個Dictionary容器保留Memento。

public class Caretaker
  {
    private Dictionary<int, DocumentVersion> _mementoList = new Dictionary<int, DocumentVersion>();

    public DocumentVersion GetDocumentVersion(int versionID)
    {
      return _mementoList[versionID];
    }

    public void AddDocumentVersion(DocumentVersion documentVersion)
    {
      int maxVersionID = _mementoList.Keys.Count == 0 ? 0: _mementoList.Keys.Max();
      _mementoList.Add(maxVersionID + 1, documentVersion);
    }
  }

4、備忘錄形式的實用場景

在以下情形下可以斟酌應用備忘錄形式:

假如體系須要供給回滾操作時,應用備忘錄形式異常適合。例如文本編纂器的Ctrl+Z撤消操作的完成,數據庫中事務操作。

5、備忘錄形式的優缺陷

備忘錄形式具有以下長處:

假如某個操作毛病地損壞了數據的完全性,此時可使用備忘錄形式將數據恢復成本來准確的數據。

備份的狀況數據保留在提議人腳色以外,如許提議人就不須要對各個備份的狀況停止治理。而是由備忘錄腳色停止治理,而備忘錄腳色又是由治理者腳色治理,相符單一職責准繩。

固然,備忘錄形式也存在必定的缺陷:

在現實的體系中,能夠須要保護多個備份,須要額定的資本,如許對資本的消費比擬嚴重。

6、總結

備忘錄形式重要思惟是——應用備忘錄對象來對保留提議人的外部狀況,當提議人須要恢回復復興來狀況時,再從備忘錄對象中停止獲得,在現實開辟進程也運用到這點,例如數據庫中的事務處置。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved