Ajuda para aplicar o padrão GOF (criacional) - Factory method
1 resposta
java
I
Ivan.goncalves
Explique porque o código abaixo não implementa o Factory Method Pattern. Modifique o código para que ele passe a implementar esse padrão.
publicclassXMLReaderFactory{// Esse método retorna uma instância de uma classe// que implementa a interface XMLReader.// A classe específica que ele cria e retorna // é baseada em uma propriedade do sistema.publicstaticXMLReadercreateXMLReader();}publicinterfaceXMLReader{publicvoidsetContentHandler(ContentHandlerhandler):publicvoidparse(InputStreamis);}
No factory method o metodo para construir não deve ser estático.
À definição engloba 4 classes:
abstração que cria
abstração do que precisa ser criado
implementações dos dois
Vc precisaria remover o static num primeiro momento e depois transformar a sua classe factory em uma interface
Vc vai ter duas interfaces, basta implementar duas classes que usam as mesmas.
A ideia é que vc tenha fábricas diferentes de tipos concretos diferentes unidos sob mesma interface publica.
Exemplo de uso:
testes. Vc pode testar seu código adicionando uma factory que retorna um objeti que vai falhar pq vc quer ter certeza que seu codigo lida com exceções
auditoria: em uma parte do seu sistema vc substitui a factory por algo que retorna um proxy para o objeto que vc quer, que vai escrevendo o que acontece