SOLID Design Principles
Single-responsibility : Every class/module should have a single purpose or responsibility. Open-closed : Open for extension, closed for modification Liskov substitution : Behavorial class substitution. If type A is derived from type B then you should be able to substitute…