Para quem tah iniciando, essa separação de camadas é um bom ponto de partida:
Controladores > Serviços > DAO
Controladores: Aqui é o código que irá controlar a tela do usuário. Se for uma tela em java Swing, aqui poderia ser os JFrames, ou se a “tela” for apresentada no console, aqui que ficaria a leitura dos dados usando a classe Scanner junto com as apresentações das informaçoes usando System.out.println.
Serviços: As classes de serviços irão executar a lógica do seu sistema, ou seja, as validações e regras, ex: Ao tentar sacar de uma conta e a mesma não tiver saldo suficiente, o sistema deve lançar um erro. Esse tipo de regra ficaria nas classes de serviços, e essas classes são instanciadas e chamadas pelos controladores.
Dominio: Aqui entra as classes do domínio do negócio, e vc terá que identificá-las à partir do enunciado (como dito pelo colega @edpickler). No caso de um sistema de agenda, por exemplo, aqui ficariam as classes Agenda e Contato.
DAO: As classes DAOs são chamadas pelas classes de serviços e realizam apenas operações de persistencia. Uma prática é fazer cada DAO ter um construtor que receba uma conexão com o banco (Connection), que é obtida da factory na camada de serviço e passada para a DAO no momento em que for instanciado.
Em um desenvolvimento de algum projeto, há N formas de estruturar o projeto. Esse que postei é apenas uma delas e vc tem toda liberdade de mudar de acordo como ficar melhor para vc