Принцип розділення інтерфейсу


Принцип розділення інтерфейсу англ Interface Segregation Principle, ISP — важливий принцип об'єктно-орієнтованого програмування, визначений Робертом Мартіном у такому вигляді:

«

Клієнти не повинні залежати від методів, які вони не використовують 1

Оригінальний текст англ

The interface-segregation principle ISP states that no client should be forced to depend on methods it does not use

 »

Отже, даний принцип означає, що занадто «товсті» інтерфейси необхідно розділяти на менші та специфічні, щоб їх клієнти знали лише про ті методи, що необхідні для них у роботі Як результат, при зміні певного функціоналу, незмінними мають лишитися ті класи, що не використовують його Тобто виконання цього принципу допомагає системі залишатися гнучкою при внесенні до неї змін та лишатися простою для рефакторингу

Зміст

  • 1 Приклад
    • 11 Приклад порушення ISP
    • 12 Застосування ISP
    • 13 ISP та шаблони проектування
  • 2 Переваги та недоліки
  • 3 Використання
  • 4 Примітки
  • 5 Посилання

Прикладред

Приклад порушення ISPред

Для прикладу порушення уявімо собі таку систему:

public interface Animal public class Bird implements Animal @Override public void fly @Override public void bark public class Dog implements Animal @Override public void fly @Override public void bark

Що буде, коли в систему доведеться додавати новий клас, наприклад Cat Легко здогадатися, якою буде його реалізація

Застосування ISPред

Виходом з цієї ситуації є використання розділення інтерфейсу Так званий «товстий» Animal варто розділити на наступні два інтерфейси: Flyable та Barkable

public interface Animal public interface Flyable public interface Barkable public class Bird implements Animal, Flyable @Override public void fly public class Dog implements Animal, Barkable @Override public void bark

Після застосування такого підходу класи стають «здоровими», з них зникають зайві методи

ISP та шаблони проектуванняред

Проте інколи складається ситуація, що не дозволяє зробити такий рефакторинг Тоді варто застосовувати архітектурне рішення, що надає паттерн Адаптер Система набуває такого вигляду:

public interface Animal public interface Eatable public interface Flyable public interface Barkable public class FlyingAdapter implements Eatable, Flyable @Override public void fly @Override public void eat public class BarkingAdapter implements Eatable, Barkable @Override public void bark @Override public void eat

Наслідки використання цього підходу наступні:

  • клієнтський код працює лише з тією функціональністю, яка йому потрібна;
  • в той же час, робота відбувається за допомогою сутностей старої системи, що не вимагає в ній будь-яких змін;
  • подібний підхід знижує очевидність архітектурних рішень, прочитність коду, і має використовуватись тільки якщо зміна старої системи неможлива з певних причин

Переваги та недолікиред

Серед плюсів варто відзначити наступні:

  • при необхідності створення нової реалізації інтерфейсу немає потреби реалізовувати непотрібні методи;
  • клієнтський код отримує лише те, що потрібне для його роботи

Мінус використання полягає в зростанні кількості інтерфейсів, що приводить до зростання складності системи

Використанняред

SOLID — буква «I» означає принцип розділення інтерфейсу англ Interface Segregation Principle

Приміткиред

  1. ↑ Martin, Robert The Interface Segregation Principle PS Архів оригіналу за 2012-09-01 Процитовано 2006-10-05 

Посиланняред

  • OOP SOLID Rules : Interface Segregation Principle ISP англ
  • SOLID conclusions with ISP and DIP англ
  • Принцип разделения интерфейса рос
  • OOD Principles рос


Принцип розділення інтерфейсу інформація про

Принцип розділення інтерфейсу

Принцип розділення інтерфейсу
Принцип розділення інтерфейсу
Принцип розділення інтерфейсу Перегляд теми.
Принцип розділення інтерфейсу що, Принцип розділення інтерфейсу хто, Принцип розділення інтерфейсу пояснення

There are excerpts from wikipedia on this article and video



випадкові Повідомлень

Соціальних рахунків

Facebook Twitter VK
Copyright © 2014. Пошукова система