SOLIDPrinciples Single responsibilityOpen/closedLiskov substitutionInterface segregationDependency inversion