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

Реализация шаблона в Java не сложная создаем интерфейс для предоставления сервиса, описываем его методы, создаем клиентские классы, которые будут использовать предоставляемый сервис, а также создаем реализацию сервиса, или другими словами реализацию интерфейса.
Наследование – это способ расширения класса, за счет наследования от родительского класса. Наследование статично и часто является неудачным решением. Делегирование – более универсальный способ расширения класса, хотя менее удобный, и применяется там, где наследование не решает задачу, например динамическое наследование.
Пример множественного наследования.
При использовании делегирования, класс не наследует методы класса, а вызывает их. Множественное наследование, если оно необходимо, также возможно реализовать с помощью делегирования. Например, человек может быть студентом и при этом быть пассажиром транспорта, и быть водителем. Класс Person делегирует ответственность по выполнению роли некоторому классу, который специально предназначен для выполнения данной роли.
Пример делегирования.
В случае делегирования класс имеет набор объектов, исполняющих определенные роли.
У меня есть ряд проектов, доступ к которым должен быть из разных мест, например рабочий ПК, домашний ПК, ноутбук. Носить на флеш картах исходные коды, и потом синхронизироваться, не вариант, не удобно и т.п.. Идеальное решение SVN или Git. Рассматривая различные SVN хостинги, я остановился на unfuddle.com как раз для моих нужд прекрасно подходит. Пространство под файлы 200 Mb, один активный проект, два пользователя. Естественно все приватно и запаролено, и доступно только для меня.
Если вам необходима командная разработка на бесплатном хостинге, посоветую xp-dev.com если проект закрытый, и code.google.com если проект open source.
Набор технологий с которыми я работаю не стоит на месте, в силу жизненных обстоятельств хочу разобраться с технологией Flash. Да да это то с помощью чего делаю тяжеловесные рекламные баннеры, и кросс-браузерные проигрыватели видео, игры, и многое другое.
Самый главный вопрос который меня беспокоил - какое инструментальное средство используются профессионалами для создания flash приложений? Посетив ряд сайтов разработчиков, стало более менее ясно, что используют в основном Adobe Flash CS4 Professional, к весне планируется выход CS5 продуктов от компании Adobe, в том числе и Photoshop, который я так думаю тоже используется при создании Flash приложений.
Также для профессиональной работы важно знание Action Script, текущая версия 3.0.
Нуждаюсь в советах профессионалов.
А какой инструментарий вы используете для работы с Flash?
Совсем недавно узнал о хитрости, если к ссылке добавить &fmt=18, то видеоплеер будет отображаться на всю ширину страницы в HD формате. Естественно можно нажать кнопку Watch in HD, но если вы “постите” ссылку, то можно добавить данный параметр для удобства просмотра.
К примеру:
- Есть ссылка: http://www.youtube.com/watch?v=aVdO-cx-McA
- Добавляем &fmt=18
- Получается: http://www.youtube.com/watch?v=aVdO-cx-McA&fmt=18
- Наслаждаемся HD
