Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Наведіть приклад порушення ISP». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Приклад порушення ISP** виникає тоді, коли один інтерфейс змушує різні класи реалізовувати методи, які їм не потрібні. Класичний приклад: пристрій «багатофункціонального принтера». **Ключове:** SimplePrinter порушує ISP, бо змушений підтримувати функціональність, яка йому не потрібна, що призводить до крихкого і негнучкого дизайну.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняПриклад порушення ISP виникає тоді, коли один інтерфейс змушує різні класи реалізовувати методи, які їм не потрібні. Класичний приклад: пристрій «багатофункціонального принтера». --- ### "Товстий" інтерфейс - порушення ISP ```python class IMultiFunctionDevice: def print(self, document): pass def scan(self, document): pass def fax(self, document): pass ``` ### Проблема Будь-який клас, що реалізує цей інтерфейс, **зобов'язаний** підтримувати всі три методи, навіть якщо йому потрібні лише один чи два. --- ### Реалізація, яка порушує ISP ```python class SimplePrinter(IMultiFunctionDevice): def print(self, document): print("Друк документа") def scan(self, document): raise NotImplementedError("Цей принтер не вміє сканувати") def fax(self, document): raise NotImplementedError("Цей принтер не вміє надсилати факси") ``` --- ### Чому це порушення ISP: 1. **Клас змушений реалізовувати методи, які йому не потрібні** SimplePrinter не вміє ні сканувати, ні надсилати факси, але інтерфейс змушує його мати ці методи. 2. **Зайві залежності** Клієнт, якому потрібен лише друк, тепер залежить від інтерфейсу, що містить методи сканування і факсу. 3. **Зміна інтерфейсу ламає систему** Якщо додати новий метод, наприклад `copy()`, доведеться змінювати всі реалізації, навіть ті, яким копіювання не потрібне. 4. **Порожні й "шкідливі" методи** Методи `scan()` і `fax()` у класі є по суті марними заглушками і призводять до помилок при виклику. --- ### Підсумок IMultiFunctionDevice: типовий «товстий» інтерфейс. SimplePrinter порушує ISP, тому що змушений підтримувати функціональність, яка йому не потрібна, що призводить до крихкого і негнучкого дизайну.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.