- Создайте пример "виртуального прокси".
- Создайте пример прокси типа "Умной ссылки", в котором вы храните количество вызовов метода определенного объекта.
- Создайте программу, схожую с определенной системой DBMS, которая позволяет только определенное число одновременных соединений. Для реализации этого используйте систему, схожую с синглетоном, контролирующую число "соединений" созданного ей объекта. Когда пользователь заканчивает соединение, система должна быть проинформирована, таким образом она может проверять, что соединение может использоваться повторно. Для гарантии этого используйте прокси-объект вместо ссылки на реальное соединение, и разработайте прокси так, чтобы он возвращал соединение системе назад.
- Используя шаблон Состояния, создайте класс, называющийся UnpredictablePerson, который меняет варианты ответа при вызове метода hello() в зависимости от Настроения(Mood), в котором он находится. Добавьте дополнительный вид Настроения(Mood), называемое Prozac.
- Создайте простую реализацию копирования при записи.
- java,util.Map не имеет способов автоматической загрузки двумерного массива объектов в карту(Map), в качестве пар ключ-значение. Создайте класс-адаптер, который делает это.
- Создайте Построитель Адаптера (Adapter Factory), который динамически находит и производит адаптер, который вам нужно подсоединить к данному объекту с желаемым интерфейсом.
- Выполните предыдущее упражнение с использованием динамического прокси, который является частью стандартной библиотеки Java.
- Измените пример Пула Объектов (Object Pool) таким образом, чтобы объекты возвращались в пул автоматически спусте некоторое время.
- Измените предыдущее упражнение на использование "аренды" таким образом, чтобы клиент мог возобновить аренду объекта для предотвращения его от автоматического освобождения по таймеру.
- Измените систему Пула Объектов (Object Pool), чтобы использовалась система нитей (thread).
← | Итераторы (Iterator): отделение алгоритмов от контейнеров | Выделение общности (Factoring commonality) | → |