Можешь привести пример, когда принцип разделения интерфейсов помогает сделать программный код более модульным и удобным для расширения?
Answer from AI
sobes.tech AI
Принцип разделения интерфейсов (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;
}
Теперь класс может реализовать только нужный интерфейс, что делает код более модульным и удобным для расширения. При добавлении новых типов уведомлений не нужно менять существующие интерфейсы и классы, а просто добавить новый интерфейс и реализацию.