Вы применяли в своих проектах паттерн 'Абстрактная фабрика'?

Паттерн «Абстрактная фабрика» используется для создания семейств связанных объектов без указания конкретных классов.

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

Пример реализации абстрактной фабрики в Python:

from abc import ABC, abstractmethod

class Button(ABC):
    @abstractmethod
    def render(self):
        pass

class WinButton(Button):
    def render(self):
        return "Отрисовка кнопки для Windows"

class MacButton(Button):
    def render(self):
        return "Отрисовка кнопки для MacOS"

class GUIFactory(ABC):
    @abstractmethod
    def create_button(self) -> Button:
        pass

class WinFactory(GUIFactory):
    def create_button(self) -> Button:
        return WinButton()

class MacFactory(GUIFactory):
    def create_button(self) -> Button:
        return MacButton()

# Использование

def client_code(factory: GUIFactory):
    button = factory.create_button()
    print(button.render())

client_code(WinFactory())  # Отрисовка кнопки для Windows
client_code(MacFactory())  # Отрисовка кнопки для MacOS

Такой подход упрощает расширение и поддержку кода, когда нужно добавить новую платформу или семейство продуктов.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее