Какие ситуации моделирует модель Monostate? - PullRequest
6 голосов
/ 05 апреля 2010

Я знаю, что такое Singleton или Monostate и как их реализовать. Хотя я вижу много вариантов использования Singleton, я не могу представить ситуацию, в которой я бы хотел позволить пользователю создать столько экземпляров моего класса, хотя в действительности за кадром действительно существует только один.

Кто-нибудь может мне здесь помочь? Я знаю, что по нескольким причинам следует держаться подальше от обеих моделей, но теоретически, какие проблемы возникают в модели Monostate?

Спасибо

1 Ответ

3 голосов
/ 05 апреля 2010

Monostate, на мой взгляд, не тот шаблон, который вы, вероятно, будете применять на уровне приложений, но он может быть полезен на уровне инфраструктуры. Этот комментарий к презентации паттерна Алекса Мартелли в Python содержит иллюстративный пример.

Рассмотрим сценарий удаленного взаимодействия DCOM или .NET, где у нас на сервере есть объект, представляющий персона по имени Боб. Боб не одиночка, потому что Боб не единственный человек. Но несколько клиентов могут разговаривать с Бобом одновременно. В каждом случае клиент не имеет прямой ссылки на Боба (который находится в другом адресном пространстве или на другом компьютере), но вместо этого имеет прокси-объект. И этот прокси-объект является локальным для данного конкретного клиента.

Таким образом, у нас есть несколько прокси-объектов, каждый с разной идентичностью , но каждый из которых проксирует состояние и поведение Боба на объекте сервера - и, следовательно, разделяет состояние и поведение. Если клиент Алиса обновляет состояние Боба (вызывая метод для своего прокси-объекта), то клиент Кэрол увидит изменения в поведении Боба (когда она вызывает методы для своего прокси-объекта). Прокси-объекты Алисы и Кэрол не имеют одинаковую идентичность объекта, но do имеют одинаковое состояние и поведение: оба представляют Боба. Два прокси имеют моностатический паттерн.

( Целую ветку стоит прочитать для более подробного обсуждения, но для меня выше было именно то, на чем она остановилась.)

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