3.2 Factory Method
Para padrões, você já deve ter percebido que a melhor explicação vem com um exemplo:
public class Cliente { public int idCliente; public double renda; public Cliente(int idCliente, double renda) { this.idCliente = idCliente; this.renda = renda; } } public class ClienteMais extends Cliente { public String email; public ClienteMais(int idCliente, double renda) { super(idCliente,renda); email = "Cadastrar email"; } } public class ClienteFactory { public Cliente getCliente(int idCliente, double renda) { if (renda > 20000) return new ClienteMais(idCliente, renda); else return new Cliente(idCliente, renda); } }
Veja que o método da fábrica getCliente decide qual tipo de cliente irá ser criado.