синглтон, заводской, автозагрузчик - PullRequest
1 голос
/ 12 марта 2012

Если кто-то использует функцию автозагрузчика (с spl_autoload_register), он больше не нужен:

  • singleton: все необходимые классы будут загружаться автозагрузчиком в любом случае, включая базу данных, журналы, R & R, фронты и т. Д., Поэтомунеобходимость «всегда включен» и т. д. объект неясен для меня
  • factory: снова, автозагрузчик загрузит требуемый класс, поэтому есть смысл использовать класс фабрики для создания экземпляров рабочих классов, реализующих интерфейс или расширяющих абстрактный класс

1 Ответ

1 голос
/ 12 марта 2012

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

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

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

Автозагрузчик долженпросто использовать, чтобы найти файл класса и включить его.Он не должен (и не может) выполнять какую-либо логику, такую ​​как создание объекта или принятие решения о том, какой объект загрузить.

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