Design Pattern: Factory Method
No mundo da programação orientada a objetos, conhecida também como POO, temos à característica de poder descobrir o padrão de comportamento de vários tipos de projetos diferentes, porém tão parecidos estruturalmente, com problemas e acertos, deveras semelhantes.
Com isso surgiu os Design Patterns onde podemos abstrair esses comportamentos, características e padrões, utilizando padrões conceituais e estruturais para construir nossos projetos pessoais ou profissionais de forma assertiva.
Hoje e em alguns próximos posts irei falar sobre todos os Patterns que estudei e conheço, sendo eles os que utilizei tanto em projetos profissionais, como em meus projetos pessoais.
Como viram no título dessa publicação, o design pattern escolhido para começar essa série de textos, foi o Factory Method, em livre tradução Fábrica de métodos.
Esse padrão é conhecido pelo proposito de criação e seu escopo é de classe. Certo, você deve estar se perguntando o que isso significa?
Significa que o objetivo dele é conseguir criar uma “Fábrica” de classes.
Em tempo de execução faremos com que, nosso algorítimo tome a decisão de a qual tipo uma classe x pertence. Para que isso aconteça, o nosso Factory Method dispõe de uma interface, e somente as suas subclasses que decidirão qual a classe concreta deverá ser instanciada.
Gosto de lembrar de uma frase que li em Design Patterns com c#: Aprenda padrões de projeto com os games, que exemplifica muito bem esse Pattern:
Abstração não deve depender de detalhes, detalhes são quem deve depender de abstrações.
Depois dessa breve explicação, vamos por a mão na massa? ops, no código rs.
Let’s Code:
Obs: vou mostrar somente essa implementação de classe, pois as demais são com a mesma estrutura, sinta-se a vontade para criar quantas achar necessário.
Criamos o método Escolher_Personagem, dentro da Classe FactoryMethod, usamos uma implementação bem simples; onde recebemos o nome do personagem por um parâmetro do tipo string e com um switch case, apontamos qual classe instanciar e retornar.
Feito os passos anteriores, finalizamos nossa estrutura.
Agora vamos utiliza-la.
Vamos escolher a Chun li e quando a escolhemos, nos bastidores da nossa aplicação, o algorítimo do factory method vai trabalhar com o nosso aplicativo executando, e então vai instanciar o objeto dela.
Com isso recebemos a mensagem do resultado final:
Com esse post, você aprendeu criar um programa que pode crescer com vários outros personagens, e que, ficou super fácil de dar manutenção, pois utilizando o Factory Method, podemos instanciar cada um deles dinamicamente em tempo de execução.
Essa abstração pode ajudar você em muitos outros tipos de projetos, espero que com esse novo aprendizado, você possa contribuir com muita performance nos seus trabalhos e projetos pessoais.
Até uma próxima!!
Don’t stop learning.
Repositório com o projeto open source: https://bit.ly/3bTAmX0
Sinta-se a vontade para estudar o código fonte, abrir issues ou fazer pull requests.