Скины - это еще один уровень абстракции (YALOA!).
Если вы прочитаете шаблон проектирования MVC , вы поймете многие из необходимых принципов.
Слой представления (или обложка) должен делать только несколько вещей:
- Показать интерфейс
- Когда предпринимаются определенные действия (щелчок, ввод текста в поле и т. Д.), Тогда запускаются действия
- Он должен получать уведомления от модели и контроллера, когда он должен измениться
В обычной программе эта абстракция выполняется с помощью кода, который связывает текстовые поля с методами и объектами, с которыми они связаны, и с кодом, который изменяет отображение на основе команд программы.
Если вы хотите добавить скины, вам нужно взять эту способность и сделать так, чтобы это можно было сделать без повторной компиляции кода.
Посмотрите, например, XUL и посмотрите, как это там делается. Вы найдете много проектов скинов, использующих XML для описания различных «граней» скина (его воспроизведения музыки или организации библиотеки для скина MP3-плеера), а также того, где находится каждый элемент управления и какие данные и методы его используют. должны быть прикреплены к в программе.
Может показаться сложным, пока вы не сделаете это, тогда вы поймете, что это так же, как и любой другой уровень абстракции, с которым вы сталкивались ранее (от программы с gotos, до структур управления, функций, структур, классов и объектов). для JIT-компиляторов и т. д.).
Начальная кривая обучения не тривиальна, но сделайте несколько проектов, и вы поймете, что это не сложно.
-Adam