Principi SOLID: è un acronimo di cinque principi.
+---------+------------+---------------------------------+
| Initial | Stands for | Full form |
+---------+------------+---------------------------------+
| S | SRP | Single responsibility principle |
| O | OCP | Open/closed principle |
| L | LSP | Liskov substitution principle |
| I | ISP | Interface segregation principle |
| D | DIP | Dependency inversion principle |
+---------+------------+---------------------------------+
Principio di responsabilità singola: una classe dovrebbe avere un'unica responsabilità.
-
Analogia: lavoro come team leader per una delle aziende di software in India. Nel mio tempo libero faccio alcuni scritti, editing di giornali e altri vari progetti. Fondamentalmente, ho più responsabilità nella mia vita.
Quando succede qualcosa di brutto sul mio posto di lavoro, come quando il mio capo mi rimprovera per qualche errore, mi distrao dal mio altro lavoro. Fondamentalmente, se una cosa va male, tutto si rovinerà.
Apri principio di chiusura: le entità software (classi, moduli, funzioni, ecc.) dovrebbero essere aperte per l'estensione, ma chiuse per la modifica.
Principio di sostituzione di Liskov: i sottotipi devono essere sostituibili ai loro tipi di base. Nota : S è già occupato in SOLID, quindi pre-fissato dal nome dell'autore Liskov.
-
Analogy: Ostrich è un uccello (sicuramente lo è!) e quindi eredita la classe Bird. Ora, può volare? No! Qui, il design viola l'LSP.
Quindi, anche se nel mondo reale questo sembra naturale, nel disegno di classe, Ostrich non dovrebbe ereditare la classe Bird, e ci dovrebbe essere una classe separata per gli uccelli che non possono realmente volare e Ostrich dovrebbe ereditarlo.
Principio di segregazione dell'interfaccia: i client non dovrebbero essere forzati ad implementare interfacce che non usano.
-
Analogia: immagina una situazione in cui il negoziante inizia a mostrarti anche la palla e i ceppi. Potrebbe essere possibile che ci sentiremo confusi e finiremo per comprare qualcosa che non abbiamo richiesto. Potremmo persino dimenticare perché eravamo lì in primo luogo.
Principio di inversione delle dipendenze: i moduli di alto livello non dovrebbero dipendere da moduli di basso livello. Piuttosto, entrambi dovrebbero dipendere dalle astrazioni.
-
Analogia: Parliamo dei nostri computer desktop. Parti diverse come RAM, un disco rigido e un CD-ROM (ecc.) Sono collegate in modo lasco alla scheda madre. Ciò significa che, se in futuro in qualsiasi parte smette di funzionare, può essere facilmente sostituito con uno nuovo. Immagina solo una situazione in cui tutte le parti fossero strettamente accoppiate tra loro, il che significa che non sarebbe possibile rimuovere alcuna parte dalla scheda madre. In quel caso, se la RAM smette di funzionare, dobbiamo acquistare una nuova scheda madre che sarà molto costosa.
source1
source2