I have an interface, an abstract class, and three different classes, which can be morphed into other class of the same level. The problem is, how to implement this kind of structure without violating the SOLID principles, or what’s the best way to transform a class into another similar class, but with some restrictions? TheRead more