Как называется этот шаблон? - PullRequest
0 голосов
/ 02 декабря 2010

Сначала я позвонил в ISnapshotService, вот что он делает

CountrySnapshot snapshot = snapshotService.CreateSnapshot<Country, CountrySnapshot>(country);

Чтобы это работало, страна должна выглядеть следующим образом

public class Country : ISnapshottable<CountrySnapshot>
{
  public CountrySnapshot CreateSnapshot(ISnapshotService snapshotService) { }
}

, а CountrySnapshot должен выглядеть следующим образом

public class CountrySnapshot : ISnapshotFor<Country> { }

Я использовал имя «Снимок», потому что изначально я предназначал этот сервис для создания неизменяемых снимков классов для снимка системы на конец периода для целей бухгалтерского учета.Однако мне пришло в голову, что иногда результат не будет неизменным снимком, например, StockLocation может создать StockAudit (который не является снимком.)

Итак, имея в виду, что это больше не будет простосоздать снимки, которые мне нужны, чтобы придумать лучшие имена для этих 3 интерфейсов.

  1. ISnapshotService
  2. ISnapshottable - Страна реализует это, чтобы указать, что может создать CountrySnapshot
  3. ISnapshotFor- CountrySnapshot реализует это, чтобы показать, что он создан из страны

Любое предложение приветствуется.Спасибо

Ответы [ 3 ]

1 голос
/ 02 декабря 2010

Это фабричный шаблон.см http://en.wikipedia.org/wiki/Factory_method_pattern

0 голосов
/ 02 декабря 2010

Я думаю, что это больше похоже на шаблон-прототип, потому что он создает новые объекты на основе состояния существующего объекта.

Я пошел за

  1. IPrototypeService
  2. IPrototype
  3. IPrototypedFrom
0 голосов
/ 02 декабря 2010

Похоже на сувенир .Snapshot - это Memento, а Snapshottable - это Originator, который передал свои возможности сохранения в SnapshotService.

EDIT: Согласен, это не сувенир, хотя структура похожа.Это может быть случай Временный объект или - что вы знаете - Снимок .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...