Принцип розділення інтерфейсу (ISP), четвертий принцип SOLID

інтерфейси розділення

Принцип поділу інтерфейсу є одним із п'ять принципів SOLID об'єктно-орієнтованого проектування.

Клас повинен мати декілька менших, більш сфокусованих інтерфейсів.

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

Приблизний час читання: 3 хвилин

ISP і Laravel

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

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

// CacheServiceInterface.php
interface CacheServiceInterface
{
    public function store($key, $value);
    public function retrieve($key);
}
      

пільги

  1. Зменшені залежності: завдяки реалізації лише відповідних інтерфейсів класи не обтяжені непотрібними методами, які їм не потрібні.
  2. Простіший догляд: Зміни або доповнення до інтерфейсу не впливають на непов’язані класи, покращуючи зручність обслуговування вашого коду.
  3. Читабельність: код стає більш читабельним і зрозумілим, оскільки класи чітко описують свою функціональність.

приклад

Тепер розглянемо приклад застосування принципу сегрегації інтерфейсу в Laravel.

Припустімо, ми хочемо розробити платформу електронної комерції. У нас є різні типи користувачів: клієнти та адміністратори. Ці користувачі мають різні можливості:

  1. Клієнти:
    • Переглянути продукти
    • Додайте продукти в кошик
    • Оформлення замовлень
  2. Адміністратори:
    • Керуйте продуктами
    • Керуйте замовленнями
    • Керуйте клієнтами

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

        interface UserInterface {
            public function viewProducts();
            public function addProductsToCart();
            public function placeOrders();
            public function manageProducts();
            public function manageOrders();
            public function manageCustomers();
        }
              

        Додаток ISP: Тепер застосуємо до цього сценарію принцип поділу інтерфейсу. Створити окремі інтерфейси для CustomerInterface e AdminInterface:

        interface CustomerInterface {
            public function viewProducts();
            public function addProductsToCart();
            public function placeOrders();
        }
        
        interface AdminInterface {
            public function manageProducts();
            public function manageOrders();
            public function manageCustomers();
        }
              

        Реалізуйте ці інтерфейси у відповідних класах:

        class Customer implements CustomerInterface {
            // Implement methods specific to customers
        }
        
        class Admin implements AdminInterface {
            // Implement methods specific to admins
        }
              

        Принцип сегрегації інтерфейсів є фундаментальною концепцією, яка рекомендує створення цільових і підтримуваних програмних компонентів. У Laravel застосування цього принципу гарантує, що кодова база залишається гнучкою, розширюваною та легкою для розуміння. Відокремлюючи інтерфейси на основі певної функціональності, ви прокладаєте шлях до більш організованої та надійної архітектури додатків.

        Пов'язані читання

        Ercole Palmeri

        Авторе