Каковы цели других членов класса Singleton, кроме экземпляра и его метода get?

Из шаблона проектирования от GoF

участники

Singleton

  • определяет Instance операция, которая позволяет клиентам получить доступ к своему уникальному экземпляру uniqueinstance, Instance это операция класса (то есть метод класса в Smalltalk и статическая функция-член в C++).

  • может быть ответственным за создание своего собственного уникального экземпляра uniqueinstance,

Collaborations

• Клиенты получают доступ к Singleton пример uniqueinstance исключительно через Singleton"s Instance операция.

В классе Singleton, uniqueinstance это уникальный экземпляр, и Instance() это метод get.

Каковы цели других участников:

  • метод SingletonOperation(),
  • метод GetSingletonData(), а также
  • поле singletonData?

Благодарю.

2 ответа

Решение

Ничего конкретного, а точнее сказать, что это не имеет ничего общего с Singleton, вы можете просто удалить его или переименовать или как угодно. Это обычный метод, и он не имеет никакого отношения к тому, чтобы ваш класс был синглтоном.

Дополнительные методы и поля на диаграмме показывают, что синглетам разрешено включать состояние и поведение; то есть синглтоны не просто константы. Кроме того, синглтоны предназначены для создания подклассов, что часто упускается из виду, несмотря на то, что GoF упоминал об этом несколько раз.

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

Таким образом, дополнительные методы также показывают, что синглтоны могут быть полиморфными.

Класс Singleton может быть разделен на подклассы, и приложение легко настроить с помощью экземпляра этого расширенного класса. Вы можете настроить приложение с экземпляром класса, который вам нужен во время выполнения.

Далее в книге описывается несколько способов достижения этой конфигурации.

Другие вопросы по тегам