Встречается на собеседованиях • сегодня
Приведи пример использования принципов SOLID
SOLID — это пять принципов объектно-ориентированного проектирования, которые помогают писать поддерживаемый и расширяемый код.
1. Single Responsibility (SRP)
Класс должен иметь только одну ответственность.
python
class User:
def __init__(self, name: str):
self.name = name
class UserDB:
def save(self, user: User):
print(f"Saving {user.name} to database")2. Open/Closed (OCP)
Классы должны быть открыты для расширения, но закрыты для модификации.
python
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Circle(Shape):
def init(self, radius):
self.radius = radius
text
def area(self):
return 3.14 * self.radius ** 2text
### **3. Liskov Substitution (LSP)**
Подклассы должны заменять базовые классы без ошибок.
```python
class Bird:
def fly(self):
pass
class Penguin(Bird):
def fly(self):
raise Exception("Penguins can't fly!") # Нарушение LSP4. Interface Segregation (ISP)
Клиенты не должны зависеть от интерфейсов, которые они не используют.
python
class Printer(ABC):
@abstractmethod
def print(self):
pass
class Scanner(ABC):
@abstractmethod
def scan(self):
pass
class MultiFunctionDevice(Printer, Scanner):
pass5. Dependency Inversion (DIP)
Зависимости должны строиться на абстракциях, а не на конкретных классах.
python
class Database(ABC):
@abstractmethod
def save(self, data):
pass
class MySQL(Database):
def save(self, data):
print(f"Saving {data} to MySQL")
class UserService:
def __init__(self, db: Database):
self.db = db
def create_user(self, name):
self.db.save(name)
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы