13 Разработка игрового веб-сервера на Java. Сериализация и рефлексия (интроспекция). Паттерн Factory. SAX & DOM. Ресурсная система



















































Тест

Если поле сериализуемого объекта не сериализуемое, это приведет:
  • к тому, что при десериализации для этого поля будет вызван конструктор по умолчанию
  • к ошибке компилляции
  • к исключению в runtime

Для того чтобы исключить поле сериализуемого объекта из процесса сериализации, его надо отметить ключевым словом:
  • transistent
  • volatile
  • transient
  • final
  • nonserializable

Что НЕ является минусом использования reflection:
  • не работает в окружении с повышенной безопасностью
  • разрушение ОО архитектуры
  • потеря производительности
  • уменьшение защищенности приложения при обработке пользовательских данных

Чтобы сделать объекты класса S сериализуемыми нужно:
  • S implements Writable
  • S implements Serializable и опеределить в классе S методы read() и write()
  • S implements Serializable

Как Reflection может помочь в тестировании?
  • можно получить доступ к private полям
  • можно создавать объекты без вызова конструктора
  • можно убрать или добавить ключевое слово static

У вас есть XML документ с одним единственным тэгом. Сколько callback функций будет вызвано при его обработке?
  • 7
  • 5
  • 1
  • 3

Можно ли создать ресурс с параметрами подключения сервера к базе?
  • да, можно любые параметры перенести в соответствующие ресурсы.
  • нет, можно создавать только ресурсы для объектов игровой механики

Если при создании класса сериализуемых объектов не указать serialVersionUID, он будет посчитан на основе:
  • текущего времени
  • хэш функции от класса
  • хэш функции от объекта
  • времени создания класса

Какой шаблон можно считать фабрикой?

SAX парсер отличается от DOM парсера тем, что он:
  • загружает документ полностью, независимо от того, сколько в действительности необходимо пользователю
  • создает древовидную структуру в памяти из входящего документа и лишь потом ждет запросов от клиента
  • не создает иерархической структуры в памяти
  • менее требователен к ресурсам и занимаемому свободному месту в случае использования больших входящих документов

Самостоятельная работа 6

Написать ресурсную систему сервера (ResourceFactory).

Все константы, которые использует сервер, вынести в ресурсные xml файлы. Написать классы, объекты которых можно восстановить на основе этих ресурсных xml файлов. Код, который использует константу, должен спрашивать у ResourceFactory объект ресурса по пути к файлу. Например:

ResourceFactory.instance().getResource("./data/Map.xml")
getResource(...) вернет объект по интерфейсу Resource, который вызывающий код может преобразовать в конкретный тип MapResource. MapResource - контейнер констант, которые описывают карты. Для каждой константы в этом классе должен быть get метод.

ResourceFactroy должна быть singleton. С инициализацией при старте сервера. Во время инициализации можно прочитать все ресурсы и закэшировать их объекты по пути к их файлам.