Sobes.tech
Back to questions
Junior — Middle
52

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

Answer from AI

sobes.tech AI

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

Пример реализации на Python:

from abc import ABC, abstractmethod

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

class WindowsButton(Button):
    def click(self):
        print("Windows button clicked")

class MacOSButton(Button):
    def click(self):
        print("MacOS button clicked")

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

class WindowsFactory(GUIFactory):
    def create_button(self) -> Button:
        return WindowsButton()

class MacOSFactory(GUIFactory):
    def create_button(self) -> Button:
        return MacOSButton()

# Использование
factory = WindowsFactory()
button = factory.create_button()
button.click()  # Windows button clicked

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