Single responsabilty: « chaque module doit faire une chose et la faire bien »
Open-Close: « vous devriez pouvoir utiliser et ajouter à un module sans le réécrire »
Liskov Substitution: « vous devriez pouvoir remplacer une chose par une autre si ces choses sont déclarées pour se comporter de la même manière »
Interface Segragation: « ne montrez pas à vos clients plus que ce qu'ils ont besoin de voir »
Dependancy Inversion: « dépendre des abstractions, pas des implémentations »