Descomposición de clase grande en Java

Acabo de empezar a aprender Java y tengo curiosidad de saber si es una buena práctica en Java para una buena descomposición de objetos. Déjame describir un problema. En un gran proyecto de software, siempre se trata de grandes clases como 'core' o 'ui' que tienden a tener muchos métodos y están pensadas como mediadores entre clases más pequeñas. Por ejemplo, si el usuario hace clic en un botón en alguna ventana, la clase de esta ventana envía un mensaje a la clase 'ui'. Esta clase 'ui' capta este mensaje y actúa en consecuencia haciendo algo con la interfaz de usuario de la aplicación (mediante el método de llamada de uno de sus objetos miembros) o publicando el mensaje en la aplicación 'core' si es algo como 'salir de la aplicación' o 'iniciar red conexión'

Tales objetos es muy difícil de separar, ya que son meros mediadores entre una gran cantidad de pequeños objetos de aplicación. Pero tener clases en aplicación con cientos y miles de métodos no es muy útil, evento si tales métodos son delegaciones triviales de tareas de un objeto a otro. C # resuelve este problema al permitir dividir la implementación de la clase en múltiples archivos fuente: puede dividir el objeto dios de la forma que elija, y funcionará.

Alguna práctica divide estos objetos en Java?