Класс Java / Структурирование Наследования - PullRequest
0 голосов
/ 29 марта 2019

Итак, я пытаюсь определить / запомнить, какой тип интерфейса / аннотации я должен использовать, чтобы этот макет выполнял то, что я хочу. У меня есть два типа объектов:

Виджет и ComboWidget. Я хочу, чтобы оба они были реализованы в других классах. Как следует из названия, ComboWidget является базовым классом, который будет состоять из нескольких объектов Widget. Я также хочу иметь некоторые стандартные функции, такие как addWidget (), removeWidget (), listWigets () и т. Д., Которые будут применяться ко всем элементам, которые реализуют ComboWidget.

Сам виджет будет делать то же самое, что он будет реализован конкретными экземплярами виджетов (виджет кнопки, виджет панели заполнения и т. Д.).

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

Лучший способ объяснить это чертеж вроде:

Widget 
     |_ ComboWidget
                  |_ TableComboWidget
                  |_ BoomHeightComboWidget
     |_ ButtonWidget
     |_ FillBarWiget
     |_ TextWidget

Я хочу иметь возможность создать функцию с надписью addWidget (Widget), и любое из вышеперечисленного может быть помещено в качестве аргумента. (За исключением самих Widget и ComboWidget, так как они, скорее всего, будут интерфейсом / рефератами)

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Изучите иерархию классов Java AWT . У него есть структура, которую вы ищете - класс Component служит базовым классом каждого компонента AWT, а Container является эквивалентом вашего ComboWidget.

1 голос
/ 29 марта 2019

То, что вы только что описали, похоже на Composite Pattern

И я не вижу ничего плохого в вашем макете класса.Ваш метод addWigget должен работать так, как вы его описали.

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