Sobes.tech
Junior — Middle
112

Interfeyslarni ajratish tamoyili dastur kodini yanada modulli va kengaytirishga qulay qilishda qanday yordam berishini misol bilan keltira olasizmi?

AIdan javob

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

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