2013-05-23 1 views
0

Я знаю, что этот вопрос был здесь спросил: Java tree data-structure?Использование Java TreeModel

Но что это лучшая практика в реализации дерева в Java? Второй наиболее проголосовавший ответ в связанном выше вопросе упоминает TreeModel, но в комментариях кто-то говорит, что это не хорошая практика кодирования. Это правда? (Я не понимаю swing vs non-swing) Использует ли обычная практика TreeModel?

+0

Возможный дубликат [Java-структуры данных дерева?] (Http://stackoverflow.com/questions/3522454/java-tree-data-structure) –

+0

Swing - это инструментарий пользовательского интерфейса, а TreeModel является частью этого Инструментарий. Нулевое соединение с любым набором инструментов пользовательского интерфейса скорее всего приведет к переносу кода. Структура данных дерева достаточно проста, что нет никакого существенного преимущества для использования Swing. –

+0

Имеет ли значение, упоминал ли я этот пост в вопросе? – John

ответ

1

Комментарий вы ссылаетесь говорит:

Я бы не использовать библиотеки Swing, на не-Swing, связанных с функциями. Это неправильная практика кодирования. Вы никогда не знаете, как Swing реализует свои деревья, каковы их зависимости и как это может измениться в будущем. Swing - это не библиотека утилиты, а библиотека пользовательского интерфейса.

По моему опыту, Swing представляет собой сложный набор инструментов пользовательского интерфейса, но все model classes, как TreeModel или TableModel приспособлены для целей поддержки кросс-Plattform UI. Возможно, имя модель предполагает, что они инкапсулируют независимые внутренние работы этих структур данных, но существование классов, таких как ButtonModel, говорит мне, что все эти классы больше доступны для поддержки модели MVC.

От docs:

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

1

TreeModel и TreeNode предназначены для реализации модели компонента визуального дерева Swing. Вы можете увидеть это на своих пакетах javax.swing.tree, например. Вы должны использовать их только для того, что они были спроектированы (связанные с UI, см. Javadocs) и не используют их в качестве структуры данных. Вот что говорит этот комментарий, о котором вы упомянули. И это абсолютно правильно.