Встречается на собеседованиях • сегодня
Приведи примеры использования принципов SOLID
S - Single Responsibility Principle (Принцип единственной ответственности)
Каждый класс должен иметь только одну причину для изменения.
javascript
class User {
constructor(name, email) {
this.name = name;
this.email = email;
}
}
class UserRepository {
save(user) {
// Логика сохранения пользователя в БД
}
}O - Open/Closed Principle (Принцип открытости/закрытости)
Классы должны быть открыты для расширения, но закрыты для модификации.
javascript
class Shape {
area() {
throw new Error('Метод area должен быть реализован');
}
}
class Circle extends Shape {
constructor(radius) {
super();
this.radius = radius;
}
area() {
return Math.PI * this.radius ** 2;
}
}
text
**L - Liskov Substitution Principle (Принцип подстановки Барбары Лисков)**
Подклассы должны заменять свои базовые классы.
```javascript
class Bird {
fly() {
console.log('Flying');
}
}
class Penguin extends Bird {
fly() {
throw new Error('Пингвины не летают');
}
}
// Нарушение LSP, лучше разделить на FlyingBird и NonFlyingBird.I - Interface Segregation Principle (Принцип разделения интерфейсов)
Клиенты не должны зависеть от интерфейсов, которые они не используют.
javascript
class Printer {
print() {
// Печать документа
}
}
class Scanner {
scan() {
// Сканирование документа
}
}
// Вместо одного интерфейса с print() и scan().D - Dependency Inversion Principle (Принцип инверсии зависимостей)
Зависимости должны строиться на абстракциях, а не на конкретных реализациях.
javascript
class Database {
save(data) {
// Сохранение в БД
}
}
class UserService {
constructor(database) {
this.database = database;
}
createUser(user) {
this.database.save(user);
}
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы