Sobes.tech
Назад к вопросам
Junior — Middle
90

Можешь привести пример, когда принцип разделения интерфейсов помогает сделать программный код более модульным и удобным для расширения?

Ответ от нейросети

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;
}

Теперь класс может реализовать только нужный интерфейс, что делает код более модульным и удобным для расширения. При добавлении новых типов уведомлений не нужно менять существующие интерфейсы и классы, а просто добавить новый интерфейс и реализацию.