Я новичок в разработке ОО систем. У меня есть простое приложение Flash Cards, где я не могу понять, как правильно спроектировать систему. Приложение имеет простой графический интерфейс с кнопками «вопрос», «ответ» и «пара». Набор данных вопросов и ответов хранится во встроенной базе данных Derby.
Быстрая настройка:
Класс базы данных - обрабатывает подключение, отключение и возвращает ArrayList на основе выбранного фильтра (в данный момент вызываемого объектом CardSet) (класс DB настроен как статический)
Класс CardSet - содержит список ArrayList, используемый в данный момент, содержит текущую карту
Класс карты - содержит данные для флэш-карты (вопрос и ответ, пара других вещей)
Класс приложения - создает графический интерфейс и обрабатывает события действия
Итак, вот мой вопрос: я хочу отделить графический интерфейс и логику приложения. Я думаю, что это может быть хорошим случаем для MVC, но я не уверен, как действительно отделить все это (никогда не использовал это). Создается ли класс контроллера в main, который затем запускает графический интерфейс, а затем создает другие классы (в моем случае, CardSet). Как насчет доступа? Должны ли определенные вещи быть статичными?
Еще один вопрос - для обработки событий GUI, вы просто настроили его для вызова универсального метода в классе контроллера? Например, нажата кнопка «Следующая карта», должна ли она просто вызывать что-то вроде controller.nextCardAction ()? Стоит ли просто использовать шаблон Observer, чтобы графический интерфейс мог извлекать данные?
Извините за вопросы новичка, но это мой первый опыт в приложении Java. Любая помощь будет отличной. Хорошие ссылки также приветствуются. У меня есть книга Head First Design Patterns, но у меня просто нет достаточно реальных примеров, чтобы полностью понять ее для моего приложения.