Clean Architecture
  • Clean Architecture
  • Che cosa si intende per struttura e architettura
  • Due diversi oggetti di valore
  • Panoramica sui paradigmi
  • La programmazione strutturata
  • La programmazione ad oggetti
  • La programmazione funzionale
  • Principi di progettazione
  • Il principio SRP (Single Responsibility Principle)
  • Il principio OCP (Open-Closed Principle)
  • Il principio LSP (Liskov Substitution Principle)
  • Il principio ISP (Interface Segregation Principle)
  • Il principio DIP (Dependency Inversion Principle)
  • I componenti
  • Coesione dei componenti
  • Accoppiamento dei componenti
  • Che cos'è l'architettura?
  • Indipendenza
  • Delimitazioni: tracciare una linea
  • Anatomia di una delimitazione
  • Politiche e livelli
  • Regole operative
  • Architettura "da urlo"
  • Architettura clean
  • Presenter e Humble Objects
  • Delimitazioni parziali
  • Livelli e delimitazioni
  • Servizi: grandi e piccoli
  • Delimitazione di test
  • Il database è un dettaglio
  • Il Web è un dettaglio
  • I framework sono un dettaglio
  • Caso di studio: vendita di video
  • Manca ancora qualcosa...
Powered by GitBook
On this page
  • Un esempio di codice conforme al principio LSP
  • Un esempio di codice che viola il principio LSP

Was this helpful?

Il principio LSP (Liskov Substitution Principle)

PreviousIl principio OCP (Open-Closed Principle)NextIl principio ISP (Interface Segregation Principle)

Last updated 5 years ago

Was this helpful?

Questo principio afferma che:

I tipi utilizzati all'interno di un programma dovrebbero essere sostituibili con i loro sottotipi senza alterare la correttezza del programma stesso.

Un esempio di codice conforme al principio LSP

Immaginiamo di avere una classe Billing che utilizza un'interfaccia License con un metodo calcFee. Questa interfaccia viene implementata da due classi PersonalLicense e BusinessLicense:

Questo assetto non viola il principio LSP, poiché il comportamento di Billing non dipende da quale dei due sottotipi impiega.

Un esempio di codice che viola il principio LSP

Immaginiamo di avere una classe Geometry che utilizza la classe Rectangle, la quale ha come sottotipo Square.

Questo assetto viola il principio LSP, poiché Square non può essere un sottotipo di Rectangle perché l'altezza e la larghezza di un Rectangle può variare in modo indipendente, mentre in uno Square no! Se adottassimo questo assetto saremmo costretti ad aggiungere un'istruzione if all'interno di Geometry per verificare il tipo di istanza passata.