PHP: Паттерн Фабрика (Factory)

Паттерн Фабрика (Factory) — это порождающий паттерн проектирования, который используется для создания объектов без указания конкретных классов объектов. Фабричный метод задает интерфейс для создания объекта, но оставляет подклассам решение о том, экземпляр какого класса создавать. Это позволяет делегировать логику создания объектов подклассам.

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

Пример реализации паттерна "Фабрика" на PHP

Допустим, у нас есть приложение для отправки сообщений, которое может отправлять различные типы сообщений (например, Email, SMS, Telegram). Мы хотим создать фабрику, которая будет создавать объекты для отправки сообщений определенного типа в зависимости от нашего выбора.

Шаг 1: Создадим интерфейс для наших отправителей сообщений.

interface MessageSender {
    public function send( $message );
}

Шаг 2: Реализуем конкретные отправители сообщений.

class EmailSender implements MessageSender 
{
    public function send( $message )
	{
        echo "Отправка email-сообщения: $message\n";
    }
}

class SmsSender implements MessageSender 
{
    public function send( $message ) 
	{
        echo "Отправка SMS-сообщения: $message\n";
    }
}

class TelegramSender implements MessageSender 
{
    public function send( $message )
	{
        echo "Отправка сообщения в Telegram: $message\n";
    }
}

Шаг 3: Создадим фабричный класс.

class MessageSenderFactory 
{
    public static function createSender( $type ) 
	{
        switch( $type )
		{
            case 'email':
                return new EmailSender();
            case 'sms':
                return new SmsSender();
            case 'telegram':
                return new TelegramSender();
			default:
                throw new Exception("Неизвестный тип отправителя сообщений: $type");
        }
    }
}

Шаг 4: Использование фабрики для создания объектов отправителей сообщений.

В этом примере MessageSenderFactory — это фабрика, которая создает объекты EmailSender, SmsSender или TelegramSender в зависимости от переданного типа. Это позволяет легко расширять систему, добавляя новые типы отправителей сообщений, не изменяя код фабрики.

$emailSender = MessageSenderFactory::createSender( 'email' );
$emailSender->send( 'Привет, это тестовое сообщение по email!' );

$smsSender = MessageSenderFactory::createSender( 'sms' );
$smsSender->send( 'Привет, это тестовое сообщение по SMS!' );

$telegramSender = MessageSenderFactory::createSender( 'telegram' );
$telegramSender->send( 'Привет, это тестовое сообщение через Telegram!' );
PHP Паттерн Просмотров: 253
Оценить код:

Комментарии

Ваш комментарий будет первым.
Войдите, чтобы оставить комментарий.