Abstract supersclass (Абстрактный суперкласс)

14 Март 2010 Vitaliy Juravskiy 3 View Comments

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

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

abstract supperclass uml diagramm.jpg

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

Домашняя локальная сеть. Настройка ASUS WL-520GU

7 Март 2010 Vitaliy Juravskiy 34 View Comments

wi-fiНа моем нетбуке wi-fi карта, учитывая то, как в Белгороде “стремительно” развивается данная технология в  общественных  местах, можно сказать, что наличие данного устройства в составе нетбука совершенно бесполезно и не так часто используется как хотелось бы, но никто не мешает у себя дома развернуть wi-fi сеть и пользоваться беспроводной технологией из любого уголка квартиры (дома), если канал Интернет позволяет :) то можно даже Интернет трафик соседям продавать.

Приобрел я с месяц назад маршрутизатор ASUS WL-520GU.

Читать далее...

Gateway (Шлюз)

7 Март 2010 Vitaliy Juravskiy 12 View Comments

Данный шаблон проектирования инкапсулирует в себе бизнес логику доступа к внешней системе, это может быть ресурс, база данных или API сложной библиотеки.

gateway design pattern

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

Interface (Интерфейс)

28 Февраль 2010 Vitaliy Juravskiy 38 View Comments

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

interface design pattern uml

Реализация шаблона в Java не сложная создаем интерфейс для предоставления сервиса, описываем его методы, создаем клиентские классы, которые будут использовать предоставляемый сервис, а также создаем реализацию сервиса, или другими словами реализацию интерфейса.

Delegation (Делегирование)

21 Февраль 2010 Vitaliy Juravskiy 25 View Comments

Наследование – это способ расширения класса, за счет наследования от родительского класса. Наследование статично и часто является неудачным решением. Делегирование – более универсальный способ расширения класса, хотя менее удобный, и применяется там, где наследование не решает задачу, например динамическое наследование.

delegate class personПример множественного наследования.

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

delegate design pattern uml Пример делегирования.

В случае делегирования класс имеет набор объектов, исполняющих определенные роли.