Записи, с помощью которых вы строите модель данных, называются, среди прочего, объектами значений (VO) или объектами значений данных (DVO).Чтобы ответить на ваш последний вопрос в первую очередь, я бы никогда не предоставил бы VO-расширение, отличное от базового VO-класса, поэтому не расширяйте Sprite, вы пожалеете об этом позже.
Болеев иерархию.Вы расширяете абстрактный класс Entry
для создания конкретных подклассов, но, поскольку вы также упоминаете возможный интерфейс, я не уверен, что вам следует использовать extension.Используйте общий базовый класс, только если ваши объекты-значения на самом деле имеют общие свойства.Если каждая запись имеет свойство title
, хорошо, поместите это в Entry
и сделайте его подклассом.Если ваш тезис будет пустым, я бы рекомендовал вместо этого использовать интерфейс маркера (= пусто).
У меня есть общий интерфейс маркера для объектов-значений, которые имеют более специфические подинтерфейсы для добавления таких функций, как синтаксический анализ или композиция xml.,Как только вы начнете использовать интерфейсы для этого, его легко улучшить.
Затем отображение.Там нет одного правильного ответа на этот, тем более, что ваш пример все еще довольно широк.Но я бы передал VO объекту в целом через метод, который заявляет, что он будет хранить VO и перерисовывать сам.
interface IEntryDisplay {
redrawWithEntry(entry:IEntry):void;
}
Используйте интерфейс IEntry для передачи объекта в целом.В вашей реализации используйте каскад if с условиями is Type
для рисования.
public function redrawWithEntry(entry:IEntry):void {
this.entry = entry;
if (entry is MovieEntry) {
title.text = MovieEntry(entry).title;
} else if (entry is SoundEntry) {
title.text = "(Sound) "+SoundEntry(entry).fileName;
}
}
Если вы решите использовать базовый класс для иерархии Entry, используйте его вместо интерфейса.Вы хотите, чтобы ваши методы запрашивали тип объекта значения, который настолько близок к необходимому объекту, насколько это необходимо.
Поскольку вы сохраняете запись в своем классе отображения, через некоторое время ее легко передать, когда вы щелкнете по экрану.или когда вы хотите, чтобы он сделал что-то еще.
Помогает ли это?