Articoli

Principio di segregazione dell’interfaccia (ISP), quarto principio S.O.L.I.D.

Il principio di segregazione dell’interfaccia è uno dei cinque principi SOLID della progettazione orientata agli oggetti.

Una classe dovrebbe avere più interfacce più piccole e focalizzate.

Quindi le classi utilizzatrici scelgono le interfacce rilevanti per loro, riducendo le dipendenze non necessarie.

Tempo di lettura stimato: 3 minuti

ISP e Laravel

In Laravel, il principio di segregazione dell’interfaccia enfatizza la progettazione di interfacce mirate e coese. Invece di creare interfacce monolitiche, è meglio progettare interfacce specifiche per le esigenze delle classi di implementazione.

Consideriamo un’interfaccia per un servizio di caching. Invece di raggruppare tutti i metodi di memorizzazione nella cache in un’unica interfaccia, separiamoli in base alla funzionalità.

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

Vantaggi

  1. Dipendenze ridotte: implementando solo le interfacce rilevanti, le classi non sono gravate da metodi non necessari di cui non hanno bisogno.
  2. Manutenzione più semplice: modifiche o aggiunte a un’interfaccia non influiscono sulle classi non correlate, migliorando la manutenibilità del codice.
  3. Leggibilità: il codice diventa più leggibile e autoesplicativo, poiché le classi sono esplicite riguardo alle loro funzionalità.

Esempio

Vediamo ora un esempio di applicazione del principio di segregazione dell’interfaccia in Laravel.

Supponiamo di voler sviluppare una piattaforma di e-commerce. Abbiamo diversi tipi di utenti: clienti e amministratori. Questi utenti hanno funzionalità distinte:

  1. Clienti:
    • Visualizzare i prodotti
    • Aggiungere i prodotti nel carrello
    • Fare ordini
  2. Amministratori:
    • Gestire i prodotti
    • Gestire gli ordini
    • Gestire i clienti

In un approccio tradizionale, si potrebbe creare un’unica grande interfaccia denominata UserInterface che includa tutti i metodi necessari. Ciò porterebbe ad un inutile accoppiamento di funzionalità, rendendo il sistema meno flessibile.

Newsletter sull’Innovazione
Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.
        interface UserInterface {
            public function viewProducts();
            public function addProductsToCart();
            public function placeOrders();
            public function manageProducts();
            public function manageOrders();
            public function manageCustomers();
        }
              

        Applicazione dell’ISP: ora applichiamo il principio di segregazione dell’interfaccia a questo scenario. Crea interfacce separate per 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();
        }
              

        Implementa queste interfacce nelle rispettive classi:

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

        Il principio di segregazione dell’interfaccia è un concetto fondamentale che consiglia la creazione di componenti software mirati e manutenibili. In Laravel, l’applicazione di questo principio garantisce che la base di codice rimanga flessibile, estensibile e facile da comprendere. Segregando le interfacce in base a funzionalità specifiche, si apre la strada a un’architettura applicativa più organizzata e solida.

        Letture Correlate

        Ercole Palmeri

        Newsletter sull’Innovazione
        Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.

        Articoli recenti

        Apprendimento automatico: confronto tra Random Forest e albero decisionale

        Nel mondo del machine learning, sia gli algoritmi random forest che decision tree svolgono un ruolo fondamentale nella categorizzazione e…

        17 Maggio 2024

        Come migliorare le presentazioni Power Point, consigli utili

        Esistono molti suggerimenti e trucchi per fare ottime presentazioni. L'obiettivo di queste regola è di migliorare l'efficacia, la scorrevolezza di…

        16 Maggio 2024

        È ancora la velocità la leva nello sviluppo dei prodotti, secondo il report di Protolabs

        Pubblicato il rapporto "Protolabs Product Development Outlook". Esamina le modalità in cui oggi vengono portati i nuovi prodotti sul mercato.…

        16 Maggio 2024

        I quattro pilastri della Sostenibilità

        Il termine sostenibilità è oramai molto usato per indicare programmi, iniziative e azioni finalizzate alla preservazione di una particolare risorsa.…

        15 Maggio 2024

        Come consolidare i dati in Excel

        Una qualsiasi operazione aziendale produce moltissimi dati, anche in forme diverse. Inserire manualmente questi dati da un foglio Excel a…

        14 Maggio 2024

        Analisi trimestrale Cisco Talos: mail aziendali nel mirino dei criminali Manifatturiero, Istruzione e Sanità i settori più colpiti

        La compromissione delle mail aziendali sono aumentate nei primi tre mesi del 2024 più del doppio rispetto all’ultimo trimestre del…

        14 Maggio 2024

        Come organizzare al meglio i dati e le formule in Excel, per un’analisi ben fatta

        Microsoft Excel è lo strumento di riferimento per l'analisi dei dati, perchè offre molte funzionalità per organizzare set di dati,…

        14 Maggio 2024

        Conclusione positiva per due importanti progetti di Equity Crowdfunding di Walliance: Jesolo Wave Island e Milano Via Ravenna

        Walliance, SIM e piattaforma tra i leader in Europa nel campo del Real Estate Crowdfunding dal 2017, annuncia il completamento…

        13 Maggio 2024

        Leggi Innovazione nella tua Lingua

        Newsletter sull’Innovazione
        Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.

        Seguici