C\#디자인 모드 프로 그래 밍 에서 비망록 모드 의 활용 분석
소프트웨어 개발 에 서 는 사용자 가 관련 조작 을 취소 하거나 기 존의 상태 에서 회복 할 수 있 도록 대상 의 상 태 를 저장 해 야 할 때 도 있다.예 를 들 어 문서 버 전 관리 시스템 은 필요 에 따라 지정 한 문 서 를 이전에 저 장 된 임의의 상태 로 복원 할 수 있다.이 럴 때 비망록 모드 를 통 해 이 루어 질 수 있다.
비망록 모드
비망록 모드 는 패 키 징 성 을 파괴 하지 않 는 전제 에서 대상 의 내부 상 태 를 포착 하고 이 대상 외 에 이 상 태 를 저장 할 수 있 습 니 다.그 구조 도 는 다음 과 같다.
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.비망록 모델 의 장단 점
비망록 모델 은 다음 과 같은 장점 을 가진다.
만약 어떤 조작 이 데이터 의 완전 성 을 잘못 파괴 했다 면 비망록 모드 를 사용 하여 데 이 터 를 원래 의 정확 한 데이터 로 복원 할 수 있다.
백업 한 상태 데 이 터 는 발기인 역할 외 에 저장 되 어 발기인 은 각 백업 상 태 를 관리 할 필요 가 없습니다.비망록 역할 에 의 해 관리 되 고 비망록 역할 은 관리자 역할 에 의 해 관리 되 며 단일 직책 원칙 에 부합된다.
물론 비망록 모델 에 도 단점 이 있다.
실제 시스템 에 서 는 여러 개의 백업 을 유지 하고 추가 적 인 자원 이 필요 할 수 있 습 니 다.그러면 자원 에 대한 소모 가 비교적 심각 합 니 다.
총화
비망록 모델 의 주요 사상 은 비망록 대상 을 이용 하여 발기인 의 내부 상 태 를 보존 하 는 것 이다.발기인 이 원래 상 태 를 회복 해 야 할 때 비망록 대상 에서 얻 고 실제 개발 과정 에서 도 이 점,예 를 들 어 데이터 베이스 에서 의 사무 처리 등 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.