Rosa,
Estudei mais sobre o assunto aqui, entendi melhor e tentarei explicar melhor.
Fato é que Factory Method se refere a um método que funciona como uma fábrica de objeto. Pode criar vários objetos que são subclasse ou implementação de Fruta por exemplo. Pode criar Banana, Abaxi, etc.
A passagem de parâmetros para este método é irrelevante. Quem decide qual implementação de Fruta criar não é quaisquer parâmetros que sejam passados, e vou explicar abaixo o porquê. O único padrão criacional que exige parâmetros para criar objeto é o Builder, mas mesmo assim nem é para definir o tipo do objeto a ser criado e sim para definir suas características.
Vamos agora à descrição geral para Factory Method descrita no livro dos GoF:
"Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses."
O exemplo é ruim, mas com a Fruta, nós teremos mais uma interface a Prateleira. Frutas ficam em prateleiras, mas cada prateleira armazena tipos de frutas diferentes. Temos então:
public interface Prateleira(){
public void criarFrutaNovaParaPorNaPrateleira();
public Fruta getFruta();
}
public interface Fruta(){...}
A fábrica então é o método criarFrutaNovaParaPorNaPrateleira. Em cada uma das implementações de Prateleira, poderá ter uma instanciação de Fruta diferente dentro do método criarFrutaNovaParaPorNaPrateleira(). Não tem nada haver com parâmetros. Quem define o tipo de objeto a ser criado são as diferentes implementações do método fábrica abstrato. Cada implementação de Prateleira, instancia um tipo de Fruta diferente.
Agora se você quer passar um parâmetro para o método getFruta, para retornar por exemplo uma melancia com id tal, isso é irrelevante para o padrão. O padrão explica o processo de criação e não de retorno de objetos.
Como já colocado, o FactoryMethod torna possível a criação de famílias de objetos relacionados sem especificar classes concretas(deixando para as subclasses decidirem quais objetos criar). Na situação colocada abaixo pelo colega, como eu vou saber como saudar corretamento o homem, do sexo masculino, Sr, e a mulher, do sexo feminino, Sra??? Hora, passando um parâmetro, M ou F.
Poderiamos colocar essa logica em tempo de execuco; o ruim dissso são os vários ifs e elses no cliente q poluem e tornam o codigo de dificil manutencao. Assim, temos toda a logica de decisao na factory(mostrada abaixo).