В чем разница между прокладкой и рисунком фасада / адаптера? - PullRequest
18 голосов
/ 01 марта 2012

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

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

Ответы [ 2 ]

14 голосов
/ 01 марта 2012

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

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

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

11 голосов
/ 15 марта 2012

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

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

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

Обратите внимание на глагол" shim "и" adapt ".Вот как я обычно различаю их.

...