3.2 Factory Method

A diferença deste padrão com o anterior, Abstract Factory, é que este encapsula a criação de objetos deixando que as subclasses decidam quais objetos criar.

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.

Copyright © 2014 AIEC.