1. Создайте пример "виртуального прокси".
  2. Создайте пример прокси типа "Умной ссылки", в котором вы храните количество вызовов метода определенного объекта.
  3. Создайте программу, схожую с определенной системой DBMS, которая позволяет только определенное число одновременных соединений. Для реализации этого используйте систему, схожую с синглетоном, контролирующую число "соединений" созданного ей объекта. Когда пользователь заканчивает соединение, система должна быть проинформирована, таким образом она может проверять, что соединение может использоваться повторно. Для гарантии этого используйте прокси-объект вместо ссылки на реальное соединение, и разработайте прокси так, чтобы он возвращал соединение системе назад.
  4. Используя шаблон Состояния, создайте класс, называющийся UnpredictablePerson, который меняет варианты ответа при вызове метода hello() в зависимости от Настроения(Mood), в котором он находится. Добавьте дополнительный вид Настроения(Mood), называемое Prozac.
  5. Создайте простую реализацию копирования при записи.
  6. java,util.Map не имеет способов автоматической загрузки двумерного массива объектов в карту(Map), в качестве пар ключ-значение. Создайте класс-адаптер, который делает это.
  7. Создайте Построитель Адаптера (Adapter Factory), который динамически находит и производит адаптер, который вам нужно подсоединить к данному объекту с желаемым интерфейсом.
  8. Выполните предыдущее упражнение с использованием динамического прокси, который является частью стандартной библиотеки Java.
  9. Измените пример Пула Объектов (Object Pool) таким образом, чтобы объекты возвращались в пул автоматически спусте некоторое время.
  10. Измените предыдущее упражнение на использование "аренды" таким образом, чтобы клиент мог возобновить аренду объекта для предотвращения его от автоматического освобождения по таймеру.
  11. Измените систему Пула Объектов (Object Pool), чтобы использовалась система нитей (thread).