Полагаю, что "сохранение специфической для GUI-среды структуры внутри реализаций View" - это общий выбор дизайна на уровне приложения, а не абсолютная необходимость (по крайней мере, если вы думаете, что "просмотр реализации" следует рассматривать как"реализация представления плагина").
Вы можете, например, иметь очень тонкий слой представления на уровне плагина и реализовать слой суперпросмотра в родительском элементе, который вызывает плагины: мышление для системы плагиновчтобы все добавили столбец в таблицу, вы могли бы иметь большую часть кода представления на родительском уровне («таблица») и иметь свои плагины, чтобы просто передавать немного больше, чем необработанные данные: вы избежали бы повторения и сделали быкод более гибкий и обслуживаемый.
С другой стороны, если ваши плагины предоставляют очень разные типы функций, которые никогда не взаимодействуют напрямую (например, если они являются различными подсистемами симулятора полета), вы захотите сохранить всеэто связано с представлениями на уровне плагина, так что родительский объектНе нужно даже знать, с чем имеет дело данный плагин, а просто поместить его возвращаемое значение где-нибудь в GUI.
Другими факторами, которые могут повлиять на ваш выбор, являются язык и структура (если таковые имеются), которые вы используете.Использую: по моему личному опыту, шаблоны проектирования, как правило, далеки от языковой независимости, поскольку каждый язык (и структура) имеет свои сильные и слабые стороны, которые делают определенные выборы очевидными, а некоторые другие очень сложными для реализации.
Просто мои 2 ¢ к обсуждению, так или иначе!:)