SOLID

Single Responsability Principle

Open/Closed Principle

Liskov Substitution Principle

Interface Segregation Principle

Dependency Inversion Principle

Single Responsability Principle

States that every class should have a single responsibility. There should never be more than one reason for a class to change.

Open/Closed Principle

States that software entities (Classes) should be open for extension but closed for modification.

Liskov Substitution Principle

States that objects in a program should be replaceable with instances of their subtypes without altering the correctness of the program.

Interface Segregation Principle

States that many interface client-specific interfaces are better than one general purpose. In other words you should not implement methods that you don't use.

Dependency Inversion Principle