Обеспечивает согласованное поведение концептуально связанных классов, через общий абстрактный суперкласс.
Класс реализующий данный шаблон проектирования является абстрактным суперклассом, в котором инкапсулирована общая логика связанных классов. Связанные классы расширяют абстрактный класс по средством наследования. Методы с общей логикой и одинаковыми сигнатурами для всех связанных классов, помещаются в суперкласс, Методы с одинаковой сигнатурой, но зависящей от конкретной реализации подкласса, выносятся как абстрактные методы в суперкласс.

Данный шаблон проектирования уменьшает количество кода в подклассах, но при этом вносит зависимости между суперклассом и подклассами, при этом вносимые изменения в суперкласс могут внести нежелательные последствия в отдельных подклассах.
На моем нетбуке wi-fi карта, учитывая то, как в Белгороде “стремительно” развивается данная технология в общественных местах, можно сказать, что наличие данного устройства в составе нетбука совершенно бесполезно и не так часто используется как хотелось бы, но никто не мешает у себя дома развернуть wi-fi сеть и пользоваться беспроводной технологией из любого уголка квартиры (дома), если канал Интернет позволяет
то можно даже Интернет трафик соседям продавать.
Приобрел я с месяц назад маршрутизатор ASUS WL-520GU.
Читать далее...
Данный шаблон проектирования инкапсулирует в себе бизнес логику доступа к внешней системе, это может быть ресурс, база данных или API сложной библиотеки.

Доступ к ресурсу или API происходит через данный шаблон, т.е. он является оберткой, через которую происходит взаимодействие. С данным шаблоном проще совершать переходы, например от одной версии ресурса к другой, или с одной реализации API к другой. Все изменения будут производиться в Шлюзе, и переход затронет малое изменение кода приложения.
Классы предоставляют данные и сервисы клиентским классам, и чтобы клиентские классы не зависели от конкретных реализаций, необходимо заменять их другим классом, который бы минимально влиял на клиентский класс – т.е. клиентские классы получают доступ к данным и сервисам через некоторый интерфейс.

Реализация шаблона в Java не сложная создаем интерфейс для предоставления сервиса, описываем его методы, создаем клиентские классы, которые будут использовать предоставляемый сервис, а также создаем реализацию сервиса, или другими словами реализацию интерфейса.
Наследование – это способ расширения класса, за счет наследования от родительского класса. Наследование статично и часто является неудачным решением. Делегирование – более универсальный способ расширения класса, хотя менее удобный, и применяется там, где наследование не решает задачу, например динамическое наследование.
Пример множественного наследования.
При использовании делегирования, класс не наследует методы класса, а вызывает их. Множественное наследование, если оно необходимо, также возможно реализовать с помощью делегирования. Например, человек может быть студентом и при этом быть пассажиром транспорта, и быть водителем. Класс Person делегирует ответственность по выполнению роли некоторому классу, который специально предназначен для выполнения данной роли.
Пример делегирования.
В случае делегирования класс имеет набор объектов, исполняющих определенные роли.