иллюстрировать
1. Фабричный шаблон решает, как создавать экземпляры объектов без использования new.
2. Есть несколько способов создания целей, отличных от новых.
Если вы хотите изменить тип создаваемого объекта, вам нужно всего лишь изменить фабрику, и весь код, использующий эту фабрику, автоматически изменится.
3. Обычно используется с интерфейсами, приложению не требуется знать конкретные детали этих экземпляров классов.
Его легко использовать, если вы знаете, что фабрика возвращает класс, поддерживающий определенную категорию интерфейса.
Пример
/** * Абстрактный интерфейс человека * Интерфейс человека */ интерфейс Человек { публичная функция showInfo(); } /** * Класс Student, наследуемый от абстрактного человеческого интерфейса. * Класс Student. */ класс Student реализует Person { публичная функция showInfo() { echo "Это студентn"; } } /** * Класс учителя, наследуемый от абстрактного человеческого интерфейса. * Класс Учитель. */ Учитель класса реализует Человек { публичная функция showInfo() { echo "Это учительn"; } } /** * Человеческая фабрика * Класс PersonFactory */ класс PersonFactory { фабрика общедоступных статических функций ($person_type) { // Делаем заглавной первую букву типа, переданного в $class_name = ucfirst($person_type); если (class_exists($class_name)){ вернуть новое имя $class_name; }еще{ throw new Exception("Класс: $class_name не существует",1); } } } // Нужен студент $student = PersonFactory::factory('student'); echo $student->showInfo(); // Когда вам нужен учитель $teacher = PersonFactory::factory('teacher'); эхо $учитель->showInfo();
Вышеупомянутое представляет собой введение в фабричный режим PHP. Надеюсь, оно будет полезно всем.