Software Architecture in Practice

5. SOLID Principles

1. Single responsibility principle - a class should only have one reason to change 

2. Open-closed principle - classes should be open for extension but closed for modification 

3. Liskov substution principle - objects should be replaceable by instances of their subtypes without altering the program 

4. Interface segregation principle - no client should be forced to depend on methods, it doesn't use 

5. Dependency inversion principle - modules should be dependent on abstractions and not details


Class Responsibilities 

Sample responsibilities that a class can have 

  • Persistence - the process of saving data 
  • Validation - the process of validation data 
  • Error handling - handling errors gracefully or surfacing them 
  • Logging - runtime context of the application 
  • Class instantiation - creational design patterns 
  • Formatting - displaying relevant data 
  • Parsing - extracting information from data 
  • Mapping - translating data from one definition to another