Sobes.tech
Back to questions
Junior — Middle
68

Какие шаблоны проектирования отражают принципы SOLID?

Answer from AI

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)