Может ли родитель выбрать, какого потомка создать? - PullRequest
0 голосов
/ 01 апреля 2011

Если у меня есть класс Animal, и Animal передается animal_type, который является типом животных. Может ли Animal использовать эту информацию, чтобы создать из себя ребенка? Разве это не было бы хорошо, если бы класс, создающий объект, не заботился о типе объекта, который он создает? И он удаляет операторы case, необходимые для решения, какой подкласс создавать.

Например:

@animal = Animal.new(cat) which instantiates a Cat < Animal object.

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

Да.Пожалуйста, посмотрите вверх Фабрика шаблон проектирования.

0 голосов
/ 01 апреля 2011

Я не уверен, что ваш вопрос, но если вы хотите создать экземпляр класса из переменной, вы можете просто вызвать метод Class#new:

@animal = cat.new

Если вы хотите, чтобы это происходило, только если экземпляр класса cat является подклассом Animal, тогда выполните

@animal = cat.new if cat.superclass == Animal
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...