O que são métodos de fábrica e por que usá-los?

Saiba quais são os métodos de fábrica no contexto da abordagem de design do sistema. Além disso, vou explicar como usar esses métodos para escrever código mais eficiente.

A+ A-

O conceito de métodos de fabricação é muito útil e muito simples ao mesmo tempo. É simples o suficiente para explicar e eu não preciso escrever um longo post para isso!

Basicamente um método de fábrica é um método que retorna um objeto (como uma fábrica fabrica produtos -a método de fábrica fabrica um objeto -e é por isso que o nome). Para compreendê-lo com um exemplo, vamos supor que você tem uma interface, muito criativa chamada MyInterface, o que você deseja implementar. Assim, você implementá-lo em uma classe chamada, digamos, FirstImplementation. E então você faz uso de FirstImplementation em, digamos, 120 outras classes estranhas no seu software. Tudo ok tão longe! ... Mas o problema vai surgir se você precisa usar uma implementação diferente de MyInterface. Suas opções seriam:

  1. Substituir o código no FirstImplementation com o código da nova implementação
  2. Escreva a nova implementação em outra classe, digamos, SecondImplementation e mudar todas as 120 aulas ímpares para se referir ao SecondImplementation.
  3. Use uma classe de fábrica

Bem, a primeira opção é viável. Mas, nesse caso você vai perder o código do FirstImplementation. Esta não é uma forma muito pura de resolver o problema.

A segunda opção é simplesmente um pesadelo! Somente programadores tão diligente como computadores vão tentar fazê-lo como você vai ter que mudar 120 aulas ímpares.

Terceira opção é bonito, limpo e inteligente. Você acabou de criar uma nova categoria intermédia, dizem FactoryClass, e usar esta classe para obter a instância do FirstImplementation em suas 120 aulas ímpares. Agora, se você precisa usar uma implementação diferente de MyInterface -tudo que você precisa fazer é apenas para modificar o código no FactoryClass.

 MyInterface interface pública {
// Definir membros
}

FirstImplementation classe pública {
// Implementar MyInterface
}

FactoryClass classe pública {

// Construtor vir aqui

// Escrever mais métodos se neede
pública MyInterface getInstance () {
MyInterface a = new FirstImplementation ();
devolver um;
}

UserClass classe pública {
FactoryClass faObj = new FactoryClass ();
MyInterface myInter = faObj.getInstance ();
}

Portanto, agora se você decidir implementar MyInterface como SecondImplementation -tudo que você precisa fazer é mudar o código no FactoryClass. Você não precisa tocar o UserClass (es) para isso.

Você começa a idéia? Se você ainda estiver em dúvida sobre o conceito de métodos de fábrica, sinta-se livre para comentar e me perguntar. Eu irei tentar ajudá-lo.