Синглтон, заводской, автозагрузчик

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

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

1 ответ

Решение

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

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

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

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

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