Паттер: Фабричный метод (Factory method)
1️⃣ Как кратко ответить
Фабричный метод — это порождающий паттерн проектирования, который определяет интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов. Это позволяет делегировать создание объектов подклассам, обеспечивая гибкость и расширяемость кода.
2️⃣ Подробное объяснение темы
Фабричный метод — это паттерн, который позволяет создавать объекты без указания точного класса создаваемого объекта. Вместо этого, он использует метод, который возвращает объект определенного типа. Этот метод может быть переопределен в подклассах, чтобы создавать объекты различных типов.
Зачем нужен Фабричный метод?
- Гибкость: Позволяет изменять тип создаваемых объектов без изменения кода, который их использует.
- Расширяемость: Легко добавлять новые типы объектов, просто создавая новые подклассы.
- Упрощение кода: Избавляет от необходимости жестко связывать код с конкретными классами.
Как работает Фабричный метод?
Представьте, что у вас есть фабрика, которая производит автомобили. В зависимости от требований, фабрика может производить разные модели автомобилей. В программировании, фабричный метод действует как эта фабрика, создавая объекты различных классов в зависимости от ситуации.
Пример использования
Рассмотрим пример с транспортными средствами. У нас есть базовый класс 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
Где применяется Фабричный метод?
Фабричный метод широко используется в ситуациях, когда:
- Необходимо создавать объекты, но точный класс объектов неизвестен до выполнения программы.
- Требуется обеспечить расширяемость системы, позволяя добавлять новые классы без изменения существующего кода.
- Нужно уменьшить зависимость кода от конкретных классов, улучшая его тестируемость и поддерживаемость.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться