1-This design isn't following the SOLID principles as
Single responsibility ,Open/closed principle,Liskov substitution principle and Dependency inversion principle can not found them in this code.
-Interface segregation principle you use this principle in not totally right way.
1-This design isn't following the SOLID principles as