Какие шаблоны проектирования отражают принципы SOLID?
Ответ от нейросети
sobes.tech AI
Принципы SOLID направлены на создание гибкой и поддерживаемой архитектуры. Некоторые шаблоны проектирования, которые отражают эти принципы:
-
Single Responsibility Principle (SRP) — шаблон "Фасад" (Facade) помогает разделить сложную систему на отдельные части с одной ответственностью.
-
Open/Closed Principle (OCP) — шаблоны "Стратегия" (Strategy) и "Декоратор" (Decorator) позволяют расширять функциональность без изменения существующего кода.
-
Liskov Substitution Principle (LSP) — шаблон "Шаблонный метод" (Template Method) обеспечивает правильное наследование и заменяемость подклассов.
-
Interface Segregation Principle (ISP) — использование интерфейсов с узкой специализацией, например, через шаблон "Адаптер" (Adapter).
-
Dependency Inversion Principle (DIP) — шаблон "Внедрение зависимостей" (Dependency Injection) позволяет зависеть от абстракций, а не от конкретных реализаций.
Пример на Python с использованием стратегии для OCP:
from abc import ABC, abstractmethod
class PaymentStrategy(ABC):
@abstractmethod
def pay(self, amount):
pass
class CreditCardPayment(PaymentStrategy):
def pay(self, amount):
print(f"Оплата {amount} с помощью кредитной карты")
class PayPalPayment(PaymentStrategy):
def pay(self, amount):
print(f"Оплата {amount} через PayPal")
class Order:
def __init__(self, payment_strategy: PaymentStrategy):
self.payment_strategy = payment_strategy
def checkout(self, amount):
self.payment_strategy.pay(amount)
order = Order(CreditCardPayment())
order.checkout(1000)