- 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.
public class XMLReaderFactory {
// 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.
public static XMLReader createXMLReader();
}
public interface XMLReader {
public void setContentHandler(ContentHandler handler):
public void parse(InputStream is);
}
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
Etc