Вопрос

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

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

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top