In software engineering, a framework is an abstraction in which software that provides generic functionality can be modified by implementation-specific code in order to result in application-specific software.
A good framework adheres to the SOLID principles of object-oriented design. These principles are:
- Single responsibility principle. A class should do just one thing (and do it well).
- Open/close principle. A class should be open for extension but be closed for modification.
- Liskov substitution principle. Objects in a program should be replaceable with instances of their subtypes without breaking the application. See: polymorphism.
- Interface segregation principle. Many client-specific interfaces are better than fewer general-purpose interfaces.
- Dependency inversion princip...