Спросят с вероятностью 7%
Принципы SOLID — это набор из пяти принципов ООП, которые помогают разработчикам создавать более понятный, гибкий и поддерживаемый код. Эти принципы были популяризированы Робертом Мартином (Robert C. Martin), также известным как "дядя Боб". Вот что обозначает каждый принцип:
1️⃣Single Responsibility Principle (Принцип единственной ответственности):
✅Каждый класс должен иметь одну и только одну причину для изменения, то есть одну ответственность.
✅Это помогает сделать код более понятным и облегчает его поддержку, так как каждая часть кода отвечает только за одну конкретную задачу.
// Пример плохого кода
class User {
void saveToDatabase() {
// сохраняет пользователя в базу данных
}
void sendEmail() {
// отправляет приветственное письмо пользователю
}
}
// Пример хорошего кода
class UserRepository {
void save(User user) {
// сохраняет пользователя в базу данных
}
}
class EmailService {
void sendWelcomeEmail(User user) {
// отправляет приветственное письмо пользователю
}
}
2️⃣Open/Closed Principle (Принцип открытости/закрытости):
✅Программные сущности (классы, модули, функции) должны быть открыты для расширения, но закрыты для модификации.
✅Это означает, что мы должны иметь возможность добавлять новый функционал без изменения существующего кода.
// Пример плохого кода
class Rectangle {
void draw() {
// рисует прямоугольник
}
}
class Circle {
void draw() {
// рисует круг
}
}
class GraphicEditor {
void drawShape(Object shape) {
if (shape instanceof Rectangle) {
((Rectangle) shape).draw();
} else if (shape instanceof Circle) {
((Circle) shape).draw();
}
}
}
// Пример хорошего кода
interface Shape {
void draw();
}
class Rectangle implements Shape {
public void draw() {
// рисует прямоугольник
}
}
class Circle implements Shape {
public void draw() {
// рисует круг
}
}
class GraphicEditor {
void drawShape(Shape shape) {
shape.draw();
}
}
3️⃣Liskov Substitution Principle (Принцип подстановки Барбары Лисков):
✅Объекты в программе должны быть заменяемы экземплярами их подклассов без изменения правильности выполнения программы.
✅То есть, подклассы должны дополнять, а не изменять поведение базового класса.
// Пример плохого кода
class Bird {
void fly() {}
}
class Ostrich extends Bird {
void fly() {
throw new UnsupportedOperationException();
}
}
// Пример хорошего кода
class Bird {}
class FlyingBird extends Bird {
void fly() {}
}
class Ostrich extends Bird {}
class Sparrow extends FlyingBird {
void fly() {
// реализация полета для воробья
}
}
Принципы SOLID помогают писать код, который легко поддерживать и расширять. Это набор правил, которые говорят о том, как разделять обязанности между классами, как правильно наследовать и как строить интерфейсы и зависимости.
👉 Можно посмотреть Примеры как отвечают люди на этот вопрос, или перейти К списку 1429 вопроса на Frontend разработчика. Ставь 👍 если нравится контент
🔐 База собесов | 🔐 База тестовых