Utilizacao dinamica de metodos e criacao dinamica de classes

Ola a todos! Sei que Java eh uma linguagem poderosa e permite fazer coisas bem avancadas,
tenho certeza que existe uma maneira muito eficiente de resolver o problema a seguir sem
utilizar inumeros if elses.

Exemplo abstrato:
Eu tenho um classe FazedorDeCoisas que possui um metodo fazerCoisas() (publico) ok ?
E esta classe pode fazer varias coisas (privadas):
obterResumo()
obterTitulo()
obterData()
obterAnoDePublicacao()
beleza.

Como eu faria fazerCoisas() chamar metodos especificos que eu listei baseado numa configuracao previamente feita?
Por exemplo se eu quisesse obterResumo e obterTitulo apenas.
Eu setaria atributos booleanos:
boolean doObterResumo = true
doObterTitulo = true
doObterData = false
doObterAnoDePublicacao = false
e faria um monte de if`s ? Acho que tem uma maneira mais bonita de fazer isso.
O que eu usaria ? booleans para representar que metodos devem ser chamados ? Ou o q ?

Esse booleans são configurados externamente e iniciam todos false quando FazedorDeCoisas eh criado.
Ae a pessoa que quer usar a classe faz um set neles para deixar true aquilo que eh de seu interesse.

Teria algum mecanismo java ou design pattern que resolva este problema eficientemente ou O.O. ?

e detalhe: o obejeto retornado possui todos estes campos resumo, titulo, data e anoPublicacao inicialmente como null.
E eh retornado com os campos desejados setados com valores, mas o resto fica null. Teria alguma maneira de criar
um bean dinamicamente, colocando nele apenas os atributos necessarios ?

Pesquise sobre reflection.
Vai ajudar.

Acho que a maneira mais bonita de você fazer isso é você ciar um objeto com a configuração que você deseja e passar como argumento para o seu metodo “fazerCoisas()”.
Não ach oque vale a pena criar uma lógica com reflection para isso.

Mas caso ainda assim queira tentar… da uma olhada nos links da minha assinatura.

Abraço

Para gerar códigos dinamicamente… CGLIB (tem outras formas também… esse é um exemplo)

Para dar uma opnião no seu problema… sobre design patterns por exemplo… teria que entender melhor o que está pretendendo fazer…

Mas se tem lógica… tem jeito de fazer…

Valeu galera pelas dicas !
Eu vou usar a API Reflections mesmo.
Vou criar um classe FazerCoisasConfig, na qual o usuario seta o que precisa.
Provavelemente vai ser um map: parametro - nomeDeMetodo.
Esse config vai ser passado para o FazedorDeCoisas que ira usar Reflections
para chamar os métodos necessários.
Quando eu tiver alguma dúvida aqui relacionado a isso falo com vcs mestres !
Valeu pela luz.