instanceof
simply breaks the Open/Close principle. and/or Liskov substitution principle
If we are not enough abstract because of instanceof
usage, each time a new subclass makes an entrance, the main code gathering the logic of the application might be updated.
This is clearly not what we want, since it could potentially break the existing code and reduce its reusability.
Therefore, a good usage of polymorphism should be preferred over the basic use of conditional.