Извините, если раньше на этот вопрос задавали / отвечали, но я не был уверен, как правильно его сформулировать, и поэтому мои поиски могли быть неправильно сформулированы.
Я создаю приложение Paint на Java в качестве задания.Я решил сделать это, используя подход типа «плагин».Основное приложение предлагает очень мало с точки зрения функциональности, но выполняет динамическую загрузку классов и регистрирует различные плагины и тому подобное.По сути, это позволяет мне добавлять различные компоненты без необходимости что-либо жестко кодировать в основной программе: существует метод LoadComponents (), который находит все различные плагины в подпакете и загружает их.Это прекрасно работает.
Каждый компонент отвечает за создание и регистрацию своих элементов пользовательского интерфейса в JFrame основного приложения, а также за реализацию своих собственных EventListener.Пока все это прекрасно работает.
Вот моя проблема: у меня есть JPanel, который я использую в качестве холста, который, очевидно, реализует метод paintComponent () для выполнения реальной рисования.Это содержится в основном приложении и, таким образом, предлагает очень скудную функциональность.По мере добавления различных компонентов я хотел бы добавить все больше и больше функциональных возможностей в базовый класс Canvas, но, похоже, не могу найти хороший, чистый и эффективный способ сделать это.
В настоящее времявсе, что я могу придумать, это создать подклассы Canvas, которые наследуют его функциональность.Однако, чтобы сделать это, используя текущий подход, при котором плагины и функциональные возможности динамически загружаются во время выполнения, мне нужно предложить метод setCanvas () или такой, который позволяет мне переопределить ссылку на базовый класс Canvas в реальном пользовательском интерфейсе, который, чтобыМне, это не очень эффективная и не распространенная практика.
Существует также проблема нескольких плагинов, добавляющих функциональность в базовый класс Canvas, а затем выясняющих, что должно идти первым.
Любые идеи,Предложения или комментарии по этому вопросу будут с благодарностью.