При написании приложений разные разработчики часто сталкиваются с похожими задачами, проблемами и необходимостью их решения
Общепринятые и наиболее оптимальные способы решений таких задач называются – паттерны проектирования приложений.
На курсе "Паттерны проектирования в Java" детально...