Ajuda para aplicar o padrão GOF (criacional) - Factory method

  1. 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