Стоимость наследования Java (Android) - PullRequest
1 голос
/ 16 ноября 2011

Я создаю расширение ORMLite для Android.

Что я хочу сделать

Я хочу воспроизвести одно из действий, которое Doctrine и Symfony достигают в PHP с помощью моделей. Одним словом:

  • Из файла yml сгенерируйте группу классов BaseModel с аксессорами и вещи, которые не изменятся.
  • Пусть реальная модель наследует от этого BaseModel, чтобы пользовательские изменения могли сохраняться, даже если они восстанавливают модели из yml.

Мой вопрос

Мне было интересно, насколько это полезно на практике, пытаться достичь такой цели на Android или это будет рискованно с точки зрения производительности (интенсивное использование наследования).

Если вы считаете, что это неуклюже, как я могу позволить пользователю изменить файл .yml, сгенерировать модель и не начинать с нуля перестройку настраиваемых аспектов его модели. Я знаю, что это может быть сделано с помощью некоторого «трюка», но я действительно хотел бы не изобретать велосипед.

EDIT

Извините, я забыл добавить: Я использую Python для этого.

Спасибо

1 Ответ

2 голосов
/ 16 ноября 2011

Это правильный и, вероятно, единственный способ Java.В Java все вызовы являются виртуальными в любом случае, если вы не используете final повсеместно, но это означает, что вы даже не можете использовать интерфейсы.Поэтому большинство вызовов, вероятно, будет виртуальной рассылкой, что бы вы ни делали.Наследование не влечет за собой никакого другого существенного штрафа.

Кроме того, устройства Android, как правило, настолько мощные, что попытка снизить производительность до минимума за счет читабельности и удобства сопровождения программы почти наверняка не требуется.Фактически, большинство android-устройств почти так же мощны, как веб-серверы, которые делают то же самое в гораздо более медленном PHP и по-прежнему управляют тысячами пользователей, в то время как Android-устройство обслуживает одно.

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