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 »