Sobes.tech
Junior — Middle

Poți oferi un exemplu în care principiul segregării interfețelor ajută la crearea unui cod de programare mai modular și mai ușor de extins?

sobes.tech AI

Răspuns de la 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;
}

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