Solid Principles Single Responsability Open Closed Liskov Substitution Interface Segregation Dependency Iversion