В чем разница между прокладками и фасадными/адаптивными узорами?
Я разрабатываю приложение, которое должно работать с разными несовместимыми версиями некоторой библиотеки. Мой инстинкт интуиции вводил адаптер между приложением и библиотекой, которые будут иметь соответствующий объект библиотеки, введенной в нее. Затем кто-то рассказал мне о прокладках. Об этом мало литературы.
Я хотел знать, как прокладки отличаются от дизайна фасада и адаптера? И каковы некоторые из популярных применений того же самого?
Ответы
Ответ 1
В моих глазах Адаптер и Шим были бы одинаковыми.
Фасад с другой стороны служит другой цели. Если вы ожидаете, что ваш клиентский код должен будет иметь возможность отталкивать занавес, так сказать, и обращаться к базовой библиотеке, не используя вашу объектную модель, это будет Фасад. Фасад представляет собой упрощенный или общий набор объектов/методов поверх более сложной системы, но при этом обеспечивает доступ к основным сложностям, когда требуется дополнительное поведение.
Использование адаптера означает, что ваш клиентский код полностью, блаженно не осознает основные детали реализации.
Ответ 2
Функции IMO, Adapter и Shim аналогично, но означают что-то другое.
A Shim
обычно имеет очень похожий, если не точный, набор интерфейсов, когда объект "подгоняется". Например, объекты-прокси можно рассматривать как прокладки.
В то время как Adapter
обычно имеет совершенно другой, если не совсем другой, набор интерфейсов с адаптируемым объектом.
Обратите внимание на глагол "прокладка" и "адаптация". То, как я обычно различаю эти два.