Я разрабатываю GUI (графический интерфейс пользователя) для игрового движка (C++).Архитектура системы GUI?
Идея заключается в создании иерархии графических интерфейсов, таких как Focusable, Hoverable, Dragable и т. Д. Каждый компонент GUI может подключать несколько контроллеров, они изменяют поведение компонента.
Я думаю, что это дает гибкую систему и защищает от дублирования кода. Различные экземпляры одного и того же GUI-класса могут иметь разные сложные поведения (возможно, даже изменить их динамически), поэтому этот подход выглядит практичным.
Другой выбор - добавить сфокусированные, зависающие, перетаскиваемые и т. Д. Флаги в базовый компонент компонента GUI. Это похоже на накладные расходы, а не на гибкость.
Другим решением является использование декоратора и обертка объектов с помощью FocusDecorator, HoverDecorator и т. Д. Поддержание такой системы выглядит немного сложнее.
Вопрос: Что такое подводные камни в моем решении? Может быть, вы видели лучшие подходы в системах GUI? Каковы наилучшие способы реализации такой гибкой сложной системы?
Вы даете три решения, а затем спросите, каковы подводные камни в вашем решении - о чем вы спрашиваете, или вы хотите изучить профессию 3x3? –
Внимательно прочитайте вопрос. Я даю свое решение и две альтернативы. –
Нет, вы даете «идею», выбор и другое решение. –