Какова цель использования отдельного класса для каждой вкладки в Wicket?

Страница примеров Wicket для TabbedPanel (ссылка) использует отдельные, отличные классы для каждой вкладки (TabPanel1, TabPanel2 и TabPanel3). Есть ли причина не использовать три экземпляра одного и того же класса? Если да, то что это? Я все еще новичок в Wicket, но эти классы мне кажутся идентичными.

РЕДАКТИРОВАТЬ: Я запустил простой пример, используя три объекта класса tabPanel. Каждый из них был настроен на использование разных меток, и они отображались правильно.

ИЗМЕНИТЬ СНОВА: Проведя больше экспериментов и прочитав ответы, опубликованные позже, я понял, что мой первый пример был слишком простым. При использовании одного класса заголовок вкладки может быть другим, но логика останется прежней. Это не сработает, если, как кто-то сказал, он не станет классом «Швейцарский армейский нож», а это плохой дизайн. И это все равно не касается файла разметки.


person Pops    schedule 16.10.2009    source источник


Ответы (3)


Wicket предназначен для поощрения разработки компонентов многократного использования. Рассматривайте три разных класса как разные компоненты, которые вы хотите использовать на разных страницах своего приложения с совершенно разным поведением и содержимым. Произнесите Tab1 для контактной информации, Tab2 для карты и Tab3 для изображений. Вы действительно не хотели бы создавать Swiss-Army-Knife-Panel для управления всеми этими различными целями. Итак, в примере используются разные классы панелей.

По общему признанию, в этом примере используются не лучшие значения, но, возможно, будет лучше, если вы начнете с общих принципов калитки (будьте особенно внимательны, изучая, как работает с моделями), а не с этими специальными компонентами из пакета расширения wicket-extension.

person msp    schedule 21.10.2009

Если бы вы использовали три экземпляра одного и того же класса, у вас получился бы один и тот же контент на каждой вкладке ... Не очень ли это полезно?

person Tim    schedule 16.10.2009
comment
Однако я не понимаю, почему вы не можете установить в них разный контент. - person Pops; 16.10.2009
comment
Да, хорошо, как показывают ваши тесты, вы могли бы использовать один и тот же класс несколько раз, но я не уверен, что это очень типичный вариант использования ... Добавьте еще несколько компонентов и, возможно, несколько элементов формы, и вы увидите повторное использование одного и того же class бесполезен, если вы хотите, чтобы ваши вкладки были разными .. - person Tim; 17.10.2009
comment
Хорошо, очевидно, я что-то упустил, когда впервые читал твой ответ. Я думал, вы утверждаете, что нельзя использовать три разных, скажем, строки в одном классе, потому что все они будут одинаковыми, но теперь я понимаю вашу точку зрения. Если вы отредактируете свой пост, я отменю -1. - person Pops; 23.10.2009
comment
Ах, нет проблем, приятно видеть, что вы вернулись, чтобы упомянуть об этом ... И конечно, мой ответ был не самым подробным ... msparer лучше справляется с объяснением проблемы кому-то, кто плохо знаком с Wicket .. - person Tim; 23.10.2009

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

Допустим, у вас есть компонент, который отображает и адресует, со встроенным изображением местоположения на картах Google.

Вы можете создать 3 экземпляра одного и того же «AddressWithMapPanel», передавая каждому из них другую модель, причем каждая таблица будет содержать «Домашний», «Рабочий», «Другой» адреса. Затем вы можете использовать логику вкладок для переключения между просмотром разных адресов, сохраняя одни и те же изменения пользовательского интерфейса в одном месте, но получая разный контент.

person stevemac    schedule 23.10.2009