C\#디자인 모드 프로 그래 밍 에서 비망록 모드 의 활용 분석

2925 단어 C#비망록 모드
개술
소프트웨어 개발 에 서 는 사용자 가 관련 조작 을 취소 하거나 기 존의 상태 에서 회복 할 수 있 도록 대상 의 상 태 를 저장 해 야 할 때 도 있다.예 를 들 어 문서 버 전 관리 시스템 은 필요 에 따라 지정 한 문 서 를 이전에 저 장 된 임의의 상태 로 복원 할 수 있다.이 럴 때 비망록 모드 를 통 해 이 루어 질 수 있다.
비망록 모드
비망록 모드 는 패 키 징 성 을 파괴 하지 않 는 전제 에서 대상 의 내부 상 태 를 포착 하고 이 대상 외 에 이 상 태 를 저장 할 수 있 습 니 다.그 구조 도 는 다음 과 같다.
2016225100505571.jpg (581×192)
Memento 는 Originator 대상 의 내부 상 태 를 저장 하 는 데 사 용 됩 니 다.
Originator 는 Memento 를 만 들 고 필요 에 따라 Memento 에 그 상 태 를 저장 해 야 하 며 Memento 에서 내부 상 태 를 회복 할 수 있 습 니 다.
Caretaker 는 Memento 대상 을 저장 하지만 Memento 대상 에 게 어떠한 조작 도 하지 않 습 니 다.
비망록 모드 는 대상 과 관련 된 데 이 터 를 저장 하면 나중에 대상 을 복원 할 수 있다.예 를 들 어 그림 프로그램 에서 대상 의 색상 사 이 즈 를 저장 해 야 합 니 다.
예시
우 리 는 문서 버 전 관리 시스템 을 예 로 들 어 비망록 모델 을 소개 합 니 다.
먼저 Originator 를 정의 합 니 다.여기 가 문서 자체 입 니 다.

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

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

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

이 어 메 멘 토 를 정의 한다.

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.비망록 모델 의 장단 점
비망록 모델 은 다음 과 같은 장점 을 가진다.
만약 어떤 조작 이 데이터 의 완전 성 을 잘못 파괴 했다 면 비망록 모드 를 사용 하여 데 이 터 를 원래 의 정확 한 데이터 로 복원 할 수 있다.
백업 한 상태 데 이 터 는 발기인 역할 외 에 저장 되 어 발기인 은 각 백업 상 태 를 관리 할 필요 가 없습니다.비망록 역할 에 의 해 관리 되 고 비망록 역할 은 관리자 역할 에 의 해 관리 되 며 단일 직책 원칙 에 부합된다.
물론 비망록 모델 에 도 단점 이 있다.
실제 시스템 에 서 는 여러 개의 백업 을 유지 하고 추가 적 인 자원 이 필요 할 수 있 습 니 다.그러면 자원 에 대한 소모 가 비교적 심각 합 니 다.
총화
비망록 모델 의 주요 사상 은 비망록 대상 을 이용 하여 발기인 의 내부 상 태 를 보존 하 는 것 이다.발기인 이 원래 상 태 를 회복 해 야 할 때 비망록 대상 에서 얻 고 실제 개발 과정 에서 도 이 점,예 를 들 어 데이터 베이스 에서 의 사무 처리 등 이다.

좋은 웹페이지 즐겨찾기