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
Такой подход упрощает расширение и поддержку кода, когда нужно добавить новую платформу или семейство продуктов.