Более элегантный и эффективный способ передачи состояния из одного экземпляра в другой - PullRequest
1 голос
/ 15 декабря 2011

Гермиона восстанавливается после битвы при Хогвартсе и изучает объектно-ориентированное программирование на Java (см. Рисунок).Она решает построить игру, основываясь на своем опыте, и определяет следующие основные сущности:

Человек - это существо.Волшебник - это тоже человек.

Домашний эльф - это существо.

Призрак - это существо.

Затем она определяет какое-то состояние и действия:

У каждого существа есть имя.

У каждого человека есть отец и мать.

Каждый волшебник творит магию.

Каждый домашний эльф также творит магию.

Каждый призрак скользит в какое-то место.

Превращение волшебника в призрака может быть достигнуто путем копирования всех соответствующих состояний из экземпляра мастера во вновь созданный экземпляр призрака.Что является более элегантным и эффективным подходом?

Могу ли я просто сделать так, чтобы новый созданный экземпляр Ghost указывал на состояние, на которое указывал экземпляр Wizard, а затем удалял экземпляр Wizard?Извините за мой плохой английский, у меня были проблемы с написанием названия

Ответы [ 2 ]

0 голосов
/ 15 декабря 2011

Призрак и волшебник должны иметь некоторые общие данные, которые вы инкапсулируете в своем собственном классе.Когда вы делаете призрака из мастера, вы просто ссылаетесь на эти общие данные в своем призраке.Вы удаляете все ссылки на мастера, когда вы запускаете сборщик мусора, тогда мастер исчезает навсегда.

0 голосов
/ 15 декабря 2011

Java не поддерживает указатели

Вы не можете удалить экземпляр.

Вы можете сделать так, чтобы экземпляр Ghost ссылался на экземпляр Wizard.Однако я подозреваю, что это домашняя работа, и когда вы делаете домашнюю работу, вам нужно получить ожидаемый ответ, а не тот, который работает, поэтому я предлагаю вам скопировать детали, как вам было сказано.

Требуется ли эффективность?Я подозреваю, что производительность не должна беспокоить вас в этом задании.Если это проблема, можете ли вы сказать, каковы требования к производительности?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...