Я кодирую меню, которое может выглядеть примерно так:

Я хотел закодировать это, используя шаблон MVC. Итак, я начал рисовать диаграмму классов UML для модели и получил это:

Но я не был счастлив. Я не смог придумать хороший интерфейс для взаимодействия с контроллером. Затем я понял, что, например, сам NumberMenuItem может (должен) быть разделен на модель, представление и контроллер. Модель будет номером. Контроллером будет - и + используется для уменьшения и увеличения числа. И представление будет метка, отображающая текущее числовое значение. Другие подклассы MenuItem также могут быть разделены на части MVC.
Так что теперь вопрос:
Как мне смоделировать это сейчас, когда CommandMenuItem, NumberMenuItem, StringMenuItem и SubMenuItem на самом деле сами являются триадой MVC, но на более низком уровне?
P.S.
Реализация позволит, например, NumberMenuItem войти в середину меню (показывая только - # +, т.е. без какого-либо описательного текста), но мой внешний API будет гарантировать, что NumberMenuItems и StringMenuItems всегда являются единственным элементом в подменю, как в эскизе, который я отправил. Может, скрыть заголовок подменю.