В чем разница между прокладками и фасадными/адаптивными узорами?

Я разрабатываю приложение, которое должно работать с разными несовместимыми версиями некоторой библиотеки. Мой инстинкт интуиции вводил адаптер между приложением и библиотекой, которые будут иметь соответствующий объект библиотеки, введенной в нее. Затем кто-то рассказал мне о прокладках. Об этом мало литературы.

Я хотел знать, как прокладки отличаются от дизайна фасада и адаптера? И каковы некоторые из популярных применений того же самого?

Ответы

Ответ 1

В моих глазах Адаптер и Шим были бы одинаковыми.

Фасад с другой стороны служит другой цели. Если вы ожидаете, что ваш клиентский код должен будет иметь возможность отталкивать занавес, так сказать, и обращаться к базовой библиотеке, не используя вашу объектную модель, это будет Фасад. Фасад представляет собой упрощенный или общий набор объектов/методов поверх более сложной системы, но при этом обеспечивает доступ к основным сложностям, когда требуется дополнительное поведение.

Использование адаптера означает, что ваш клиентский код полностью, блаженно не осознает основные детали реализации.

Ответ 2

Функции IMO, Adapter и Shim аналогично, но означают что-то другое.

A Shim обычно имеет очень похожий, если не точный, набор интерфейсов, когда объект "подгоняется". Например, объекты-прокси можно рассматривать как прокладки.

В то время как Adapter обычно имеет совершенно другой, если не совсем другой, набор интерфейсов с адаптируемым объектом.

Обратите внимание на глагол "прокладка" и "адаптация". То, как я обычно различаю эти два.