Если у меня есть класс Animal, и Animal передается animal_type, который является типом животных. Может ли Animal использовать эту информацию, чтобы создать из себя ребенка? Разве это не было бы хорошо, если бы класс, создающий объект, не заботился о типе объекта, который он создает? И он удаляет операторы case, необходимые для решения, какой подкласс создавать.
Например:
@animal = Animal.new(cat) which instantiates a Cat < Animal object.