Sobes.tech
Back to questions
Junior — Middle
84

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

Answer from AI

sobes.tech AI

Паттерн «Абстрактная фабрика» используется для создания семейств связанных объектов без указания конкретных классов. В моих проектах на 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

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