Сброс объектов против создания новых объектов - PullRequest
5 голосов
/ 04 апреля 2010

Считается ли более эффективной практикой и / или более эффективной создание функции «перезагрузки» для определенного объекта, которая очищает / устанавливает по умолчанию все необходимые переменные-члены, чтобы обеспечить дальнейшие операции, или просто создавать новый объект извне? 1001 *

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

Кто-нибудь может дать мне примеры из реальной жизни, когда использовать каждый метод? В моем конкретном случае я думаю в основном с точки зрения ORM или модели в MVC. Например, если я хочу получить несколько объектов базы данных для отображения и изменить их за одну операцию.

Ответы [ 2 ]

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

При повторном использовании объектов вы используете шаблон Object Pool .

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

Причины не использовать пул объектов:

  • Сложность бассейна
  • Стоимость памяти для создания экземпляров этих объектов, когда они не требуются. Это может даже замедлить сборку мусора.
  • Определение того, какое состояние необходимо сбросить

Причины использования пула объектов:

  • Создание или уничтожение объекта занимает слишком много времени

Более подробная информация в статье Кирхер и Джайн .

0 голосов
/ 04 апреля 2010

Сброс выполняется из соображений производительности. Подход по умолчанию заключается в создании нового объекта, когда он вам нужен, а не в переработке существующего. Если вы не беспокоитесь о том, что ваш php работает медленно, просто создайте. Если вы беспокоитесь о том, что php работает медленно, вам следует остановиться и позаботиться о других вещах, на которые вы полагаетесь, что они намного медленнее.

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