Шаблон обёртки в картинках

В сети обнаружилась замечательная фотография, иллюстрирующая применение шаблонов типа "обертка" в реальной практике.

К семейству шаблонов "обертка" относятся все фантики, которыми покрывают то, что выдаётся за конфету: адаптер, прокси, фасад и иже с ними. Шаблоны обёрток являются основой любого Ада Паттернов.

В книжке "Софтостроение изутри" приводятся причины возникновения Ада Паттернов и, в частности, иерархий вложения, служащих лишь для обёртки. Поскольку в соответствующей главе достаточно много букв, то я приведу лишь выжимку.

Основной ценностью программной системы является её способность выполнять ожидаемые от неё функции. При добавлении новых функций оказывается, что часть старых тоже надо использовать. Но в иных сценариях. Поскольку об этом ранее не думали, в API не оказывается нужных параметров, ветвей обработки, структур данных.

Менять старую реализацию и расширять интерфейсы, делая возможным их использование новыми сценариями, решаются только отважные люди при наличии системы функциональных, а не модульных тестов, стоимость создания которых сопоставима с разработкой собственно программной системы. Поэтому принимается решение "обернуть старое API новым интерфейсом и допилить недостающие функции". После каждого подобного изменения здание системы прирастает новым этажом, совершенно бессмысленным функционально, но давящим на фундамент технической архитектуры.

Тема проектирования и реализации через задний проход также отражена на фотографиях.