ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
16 июля
1446977 Топик полностью
RxTx (05.07.2024 20:34, просмотров: 94) ответил Tyмблep на Не совсем.
Неправильное понимание паттерна "мост" и его назначения. Сразу пишу что неправильно, это тонкий вопрос в дизайне и архитектуре. Смысл паттерна "мост" не в том, чтобы соорудить некую общую абстракцию и наделять её смысловой реализацией, разделив их. Смысл только в том чтобы технически разделить интерфейс и технически позволить подменять актуальную реализацию. И абстракция-интерфейс и реализация как правило чётко определены (т.е. вообще-то глобально мы ЗНАЕМ, однако так 

как

интерфейсная часть отделена, клиентский код к интерфейсной части использует только интерфейс и поэтому можно сказать "не знает" о конкретной реализации и поэтому не подвергается переписыванию и не обязан учитывать реализацию). Смысл паттерна ТОЛЬКО в возможности технической подстановки реализации к некоему интерфейсу. "Абстракция"-"интерфейс" при описании паттерна это НЕ абстрактный класс и НЕ реальный языковой конструкт interface. (в том смысле что не обязаны ими быть) Это абстрактная интерфейсная часть в самом общем понимании, например декларация C++ класса в .h файле или даже набор опережающих деклараций C-функций.. Реализация моста не обязательно связана с pimpl и может обходиться без. "Мост" это не паттерн абстагирования, не архитектурный паттерн. Bridge это чисто "технический" структурный паттерн или что то же самое "приём" и может быть реализован даже без языков программирования и без программирования вообще. Хороший пример моста был у нас - у нас были игры, использовавшие один и тот же "движок". Движок для игр(ы) выглядел как набор .h файлов с классами. Однако компилировалась игра для нескольких различных платформ - PC/Windows, MacOs, iOs, Android и др. При этом в движке-то и работал "Bridge". У него просто использовался одна директория с .h файлами, а .cpp принадлежали полностью к "платформе" (Win, iOs, MacOs итд). Вот это и был мост aka Bridge. При этом некоторые "паттерны" как предлагаемые решения вообще говоря очень похожи друг на друга и одно в то же самое время может являться другим, поэтому вопрос тонкий, спорный, "не все так однозначно" и т.д.

Спасибо, князь. Вы настоящий дворянин. И программист.