Phil Japikse explains SOLID software principles – Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion- and how to apply them using design patterns.

SOLID Software and Design Patterns for Mere Mortals