Это, само по себе, нелегко сделать, и узнавать, когда вам многое нужно из опыта (о, я помню, когда в прошлый раз я делал это, было ужасно управлять и поддерживать ?), но Есть много доступных шаблонов, которые используются каждый день, чтобы облегчить разработку программного обеспечения и решить повседневные общие проблемы.
Одна вещь, которую вы должны иметь в виду, это то, кто несет ответственность за то, что делать. Например, может оказаться невозможным разделить прослушиватели действий кнопок, поскольку они должны выполнять операции, которые являются внутренними по отношению к самому пользовательскому интерфейсу.
Однако вы могли бы упростить это с помощью Anonymous Classes или даже Actions API , который позволяет изолировать функциональность кнопки
Еще одна вещь, на которую я бы посмотрел, - это изоляция всех отдельных контейнеров (панелей) от их собственных классов. Это изолирует функциональность и уменьшает сложность, поскольку заставляет задуматься о том, как будет работать каждый субконтейнер и за что он станет ответственным, а также уменьшит ненужный доступ от внешних воздействий.
В более сложном решении пользовательский интерфейс опирается на «модель», которая отделена от пользовательского интерфейса. Затем пользовательский интерфейс будет предпринимать действия от пользователя и обновлять модель, которая будет внутренне генерировать уведомления, которые пользовательский интерфейс будет использовать для обновления себя, чтобы отразить изменения, см. Model-View-Controller для получения более подробной информации
Итак, каков ответ?
- Разбейте ваши данные отдельно от пользовательского интерфейса. Используйте один или несколько классов контейнеров / моделей для представления данных. Используйте шаблон наблюдателя , чтобы позволить модели генерировать события, когда происходят изменения, чтобы заинтересованные стороны могли предпринять соответствующие действия
- Разбейте ваш пользовательский интерфейс на «пригодные для использования» компоненты, где каждый компонент изолирован и отвечает за управление отдельной частью пользовательского интерфейса (и как это происходит, это его собственный бизнес)
- Я бы также рекомендовал использовать внедрение зависимостей для совместного использования объектов между разделенными элементами, это позволит вам изолировать и протестировать отдельные области вашего кода, бонус, который также приводит к ...
- Разработка через тестирование (TDD) . Знайте, что и как вы хотите протестировать, прежде чем пытаться создать его