Какова цель класса менеджера? - PullRequest
1 голос
/ 19 января 2011

Я вижу много классов с пометкой "Менеджер". Как используется класс менеджера?

Например, он привык к композиции, как:

var m:Mananger = new ManagerClass();

m.doSomething();

Ответы [ 5 ]

7 голосов
/ 19 января 2011

Классы менеджера - это общая почва для кода, который как-то не подходит где-то еще. Они также имеют тенденцию быть или становиться богами .

5 голосов
/ 19 января 2011

Некоторые считают менеджеров запахом кода

5 голосов
/ 19 января 2011

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

Например, допустим, у вас есть пул соединений с базой данных, каждый из которых представлен объектом DBConnection class.

Если ваш код должен подключиться к БД через пул соединений, он просто запросит у DBConnection_Manager class новое соединение.Зачем нам нужен класс менеджера?

Класс Manager сверится со своим списком объектов DBConnection и определит, является ли какой-либо из них нераспределенным, и вернет один.Если все выделено, он либо создаст его и добавит в пул (с учетом максимально допустимого количества подключений), либо поместит запрос в очередь, либо сообщит об ошибке.

ВСЕ эти функции полностью скрыты отвызывающая сторона - мельчайшие детали управления пулом - это задача класса Manager.

Это только конкретный пример, но идея заключается в том, что управление ресурсами централизовано и инкапсулировано с помощью класса Manager и пользователя.код просто запрашивает «ресурс».

Я не уверен, что для этого подхода есть «добросовестный» шаблон проектирования, хотя я нашел по крайней мере одну веб-страницу, на которой написано: http://www.eventhelix.com/realtimemantra/ManagerDesignPattern.htm


Обновление: в случае ActionScript такой класс может использоваться для управления звуками, прослушивателями событий или виджетами GUI (например, контекстными меню)

3 голосов
/ 19 января 2011

это обычно означает, что кто-то внедряет шаблон проектирования и не знает (или не хочет использовать) формальное имя для него. вам придется прочитать код, чтобы сделать какие-либо значимые выводы.

1 голос
/ 22 ноября 2012

На мой взгляд, менеджерский класс следует использовать в следующих условиях:

  1. Необходимо обработать несколько объектов
  2. Недостаточно передать список объектов вызывающей стороне, вы должны предоставить некоторые дополнительные функции, например, выбрать max или min one
  3. Объекты для управления должны принадлежать одному классу (легко управлять)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...