| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Design, Quality, Testing > Коллизия при загрузке классов |
| Автор: omickron 6.9.2012, 07:52 |
| Приветствую, коллеги. С Java работаю не очень давно, в связи с этим вопрос. Как должно быть: [*] Пользователь запускает консольную программу [*] Ему предлагается выбрать из списка, какую фигуру нарисовать: круг, треугольник, квадрат, чёрта лысого... [*] Он выбирает, что хочет нарисовать [*] Рисуется фигура Как реализовано: [*] Иерархия классов фигур для отрисовки с общим наследником. [*] В каждом конечном классе, который отрисовывается, есть код static {Cache.getInstance.registerClass();}, в котором делается регистрация в кэше. [*] Кэш, в котором должны быть зарегистрированы все фигуры (название и созданный класс, который будет отрисовывать) - HashMap<String, Figure> [*] Когда запускается программа, пользователю предлагается выбрать фигуру из содержимого кэша, т.е. кэш возвращает список <String> [*] Пользователь выбирает фигуру, по имени-ключу находится <Figure>, у которой вызывается базовый метод Draw. [*] Для того, чтобы добавить в функционал отрисовку новой фигуры, достаточно наследоваться от какой-то существующей и зарегистрировать в кэше. Вопрос: При запуске программы кэш должен уже содержать в себе все отрисовщики, чтоб спросить пользователя, что он хочет. Но проблема в том, что классы отрисовщиков не загружаются в память до тех пор, пока не понадобятся. Как быть? |
| Автор: LSD 6.9.2012, 11:01 |
| Используй http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html. |