Sobes.tech
Junior — Middle
113

Pouvez-vous donner un exemple où le principe de séparation des interfaces aide à rendre le code logiciel plus modulaire et facile à étendre?

Réponse de l'IA

sobes.tech IA

Принцип разделения интерфейсов (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;
}

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