Duvidas na modelagem de uma aplicacao de geracao de relatorios web

Pessoal, estou desenvolvendo aqui na empresa onde trabalho, umas classes para gerar relatorio. O sistema funciona assim:
Temos um software feito em java chamado Mordomo que gera os relatorios pelo IReport e esse software trabalha via socket. Entao eu criei umas classes em php para trabalhar junto com esse Mordomo para atravez das paginas web poder gerar os relatorios. Mas eu tenho um pouco de dificuldade na modelagem dos meus projetos.
Basicamente, tenho que enviar uma string de parametros via socket para o mordomo. O Mordomo tem 3 maneiras de funcionar: ele me retorna um caminho da onde ele gerou o relatorio em pdf, pode retornar o id do registro em banco onde foi salvo o pdf ou pode me mandar o proprio pdf via socket.
Modelei da seguinte maneira:

Uma classe chamada Relatorio, onde tenho os metodos addParametro, removeParametros …, e o metodo gerarRelatorio() que recebe um objeto do tipo Recebedor. O tipo Recebedor é uma interface que tem a assinatura do metodo recebe(String nomeRelatorio, String parametros);

E entao criei 3 classes que implementam a interface Recebedor e Herdam de Socket(uma classe que fiz para comunicacao via socket). Essas 3 classes sao: RecebeCaminho, RecebeArquivo, RecebeIdBd. Essas 3 classes entao, no método recebe delas tem a maneira como cada uma vai receber(enviar os parametros via socket, ler a resposta e enviar o pdf para download pro cliente).
A maneira que chamo tudo isso fica mais ou menos assim:

Relatorio relatorio = new Relatorio('nomeDoRelatorio');
relatorio.addParametro('codigo','5');
relatorio.addParametro('nome','Danilo');
relatorio.gerarRelatorio(new RecebeCaminho('192.168.34.2',7000));//seto o ip e a porta daonde esta o Mordomo

Só que acho que essa nao e a melhor maneira. Estou pensando que deveria criar uma classe chamada Gerador e que ela deveria receber 3 objetos: O objeto relatorio(que teria os parametros), o objeto recebe(que seria um dos 3 objetos que recebem) e o objeto envia(que decidiria como enviaar) e fazelos implementarem uma interface que definiria os metodos getparametros, recebe e envia.

Qual das maneiras eu deveria fazer? Alguem tem alguma ideia melhor? Eu fico meio perdido com esse tipo de assunto.
Obrigado