У меня есть серьезная проблема. Архитектурно мне необходимо внутри одного класса сделать много вложенных (композиция). Но код начинает выглядеть ужасно - все классы помещаются в один файл, который очень сложно читать.
Есть способ в Java вынести код вложенных классов за пределы исходного кода охватывающего класса - в другой файл?
У меня был проект, в котором надо было рисовать электрические схемы на поле.
Вполне очевидная архитектура:
class Field {
class fieldObj {
}
class connector{
}
}
Очень удобно с точки зрения того, что поле должно знать, что на нём рисуют, а блоки и коннекторы должны знать, что происходит с полем. Да сам Макконелл рекомендует вкладывать классы, если реальные объекты содержат друг друга.
Всё хорошо, но блоки и коннекторы бывают разные - плодится иерархия. У них сложные правила поведения, плодится код методов.
В результате архитектурно - ок, исходный код ужасен.
Александр Опарин,
Для начала, объектам надо знать, какие у них соседи.
Например, коннектор должен понимать, куда и откуда он ведёт, нет ли уже таких коннекторов. Коннектор должен лечь на схему так, чтобы по возможности не наложиться на существующие элементы на схеме.
Уже как бы контейнер для экземпляров напрашивается, каким естественным образом является поле.