Проходящие объекты против Синглтона - PullRequest
1 голос
/ 22 февраля 2012

Насколько я понимаю, есть два основных принципа работы с объектами ролевого проигрывателя, такими как объект корневой модели (в контексте MVC):

  1. создайте объект и передайте егочерез дерево объектов (например, в конструкторе)
  2. предоставьте его как метод синглтона или другой глобальной переменной

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

Что вы предпочитаете?

Редактировать: Первый метод также использует толькоодин экземпляр, но он обеспечивается передачей объекта, а не статической функцией

Ответы [ 3 ]

2 голосов
/ 22 февраля 2012

Я предпочитаю использовать метод синглетонов getInstance() в качестве параметра конструктора - выпекать двух зайцев одним выстрелом;)

1 голос
/ 22 февраля 2012

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

Фреймворк Symfony2 - это современный пример:

http://symfony.com/doc/current/book/service_container.html

1 голос
/ 22 февраля 2012

Я думаю, что передача в качестве параметра немного более эффективна для памяти, проще в отладке, но требует дополнительной работы.

Я предпочитаю использовать синглтоны только тогда, когда они мне действительно нужны (например, сеансы базы данных, запись в файл и т. Д.).

Это действительно зависит от типа проекта, языка, бюджета, размера проекта и т. Д. «Универсального» ответа не существует.

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