← Назад ко всем вопросам

Паттер: Фабричный метод (Factory method)

1️⃣ Как кратко ответить

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

2️⃣ Подробное объяснение темы

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

Зачем нужен Фабричный метод?

  1. Гибкость: Позволяет изменять тип создаваемых объектов без изменения кода, который их использует.
  2. Расширяемость: Легко добавлять новые типы объектов, просто создавая новые подклассы.
  3. Упрощение кода: Избавляет от необходимости жестко связывать код с конкретными классами.

Как работает Фабричный метод?

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

Пример использования

Рассмотрим пример с транспортными средствами. У нас есть базовый класс Transport и два подкласса: Car и Bike. Мы создадим фабричный метод, который будет решать, какой тип транспорта создать.

from abc import ABC, abstractmethod
​
# Базовый класс
class Transport(ABC):
    @abstractmethod
    def deliver(self):
        pass
​
# Подкласс Car
class Car(Transport):
    def deliver(self):
        return "Delivering by car"
​
# Подкласс Bike
class Bike(Transport):
    def deliver(self):
        return "Delivering by bike"
​
# Фабричный метод
class TransportFactory:
    def create_transport(self, transport_type):
        if transport_type == "car":
            return Car()
        elif transport_type == "bike":
            return Bike()
        else:
            raise ValueError("Unknown transport type")
​
# Использование фабричного метода
factory = TransportFactory()
transport = factory.create_transport("car")
print(transport.deliver())  # Вывод: Delivering by car

Где применяется Фабричный метод?

Фабричный метод широко используется в ситуациях, когда:

  • Необходимо создавать объекты, но точный класс объектов неизвестен до выполнения программы.
  • Требуется обеспечить расширяемость системы, позволяя добавлять новые классы без изменения существующего кода.
  • Нужно уменьшить зависимость кода от конкретных классов, улучшая его тестируемость и поддерживаемость.

Тема: ООП
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки