Explain what some of the concepts of S.O.L.I.D are?

  • Single Responsibility principle (Class should only have a single responsibility) 
  • Open/Closed principle (Open for extension, but closed for modification) 
  • Likskov Substitution Principle (Objects should be replaceable with instances of their subtimes without altering the outcome. Bonus points if they mention design by contract ) 
  • Interface Segregation principle (Many client specific interfaces are better than one general-purpose one) 
  • Dependency inversion principle (Depend upon abstractions, not concretions)