Принцип разделения интерфейсов (Interface Segregation Principle) помогает избежать создания больших универсальных интерфейсов, которые вынуждают классы реализовывать методы, которые им не нужны. В Node.js это особенно полезно при проектировании модулей и сервисов.
Можешь привести пример, когда принцип разделения интерфейсов помогает сделать программный код более модульным и удобным для расширения?
Принцип разделения интерфейсов (Interface Segregation Principle) помогает избежать создания больших универсальных интерфейсов, которые вынуждают классы реализовывать методы, которые им не нужны.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Принцип разделения интерфейсов (Interface Segregation Principle) помогает избежать создания больших универсальных интерфейсов, которые вынуждают классы реализовывать методы, которые им не нужны. В Node.js это особенно полезно при проектировании модулей и сервисов.
Например, если у вас есть интерфейс для работы с разными типами уведомлений:
interface NotificationService {
sendEmail(email: string, message: string): void;
sendSMS(phone: string, message: string): void;
sendPushNotification(deviceId: string, message: string): void;
}
Если класс реализует этот интерфейс, но ему нужна только отправка email, он вынужден реализовать и остальные методы, что неудобно.
Разделив интерфейс на более мелкие:
interface EmailSender {
sendEmail(email: string, message: string): void;
}
interface SMSSender {
sendSMS(phone: string, message: string): void;
}
interface PushSender {
sendPushNotification(deviceId: string, message: string): void;
}
Теперь класс может реализовать только нужный интерфейс, что делает код более модульным и удобным для расширения. При добавлении новых типов уведомлений не нужно менять существующие интерфейсы и классы, а просто добавить новый интерфейс и реализацию.