Cleibson Gomes

Entendendo o Factory Pattern com exemplos em Java

Aprenda o conceito do Factory Pattern, um dos padrões de design mais populares, e veja exemplos práticos em Java para aplicá-lo em seus projetos.

O Factory Pattern, ou Padrão de Fábrica, é um dos padrões de design mais populares e amplamente utilizados no desenvolvimento de software. Ele simplifica a criação de objetos e ajuda a separar a lógica de criação de objetos da lógica de negócios. Neste post, vamos explorar o conceito do Factory Pattern e ver exemplos em Java de como implementá-lo.

O que é o Factory Pattern?

O Factory Pattern é um padrão de design criacional que fornece uma interface para criar objetos em uma superclasse, permitindo que as subclasses decidam quais objetos criar. Isso ajuda a encapsular a lógica de criação de objetos, tornando o código mais modular, flexível e fácil de manter.

Vamos dar uma olhada em um exemplo em Java para entender melhor como o Factory Pattern funciona.

Exemplo em Java

Imagine que você está desenvolvendo um aplicativo de simulação de zoológico e tem várias classes de animais, como Leão, Tigre e Urso. Usaremos o Factory Pattern para criar objetos dessas classes.

  1. Crie uma interface Animal:

    public interface Animal {
        void speak();
    }
    
  2. Implemente a interface Animal em diferentes classes de animais:

    public class Lion implements Animal {
        @Override
        public void speak() {
            System.out.println("Roar!");
        }
    }
    
    public class Tiger implements Animal {
        @Override
        public void speak() {
            System.out.println("Growl!");
        }
    }
    
    public class Bear implements Animal {
        @Override
        public void speak() {
            System.out.println("Grrr!");
        }
    }
    
  3. Crie uma classe AnimalFactory para gerenciar a criação de objetos de animais:

    public class AnimalFactory {
        public Animal createAnimal(String type) {
            if (type == null) {
                return null;
            }
            if (type.equalsIgnoreCase("LION")) {
                return new Lion();
            } else if (type.equalsIgnoreCase("TIGER")) {
                return new Tiger();
            } else if (type.equalsIgnoreCase("BEAR")) {
                return new Bear();
            }
            return null;
        }
    }
    
  4. Utilize a classe AnimalFactory para criar objetos de animais:

    public class ZooSimulator {
        public static void main(String[] args) {
            AnimalFactory animalFactory = new AnimalFactory();
    
            Animal lion = animalFactory.createAnimal("LION");
            lion.speak();
    
            Animal tiger = animalFactory.createAnimal("TIGER");
            tiger.speak();
    
            Animal bear = animalFactory.createAnimal("BEAR");
            bear.speak();
        }
    }
    

No exemplo acima, a classe AnimalFactory encapsula a lógica de criação de objetos de animais e o código cliente utiliza essa fábrica para criar objetos de diferentes tipos de animais. Isso torna o código mais fácil de manter e modificar, já que a lógica de criação de objetos está centralizada em um único lugar.


Conclusão

O Factory Pattern é um padrão de design poderoso e amplamente utilizado que facilita a criação de objetos, tornando o código mais modular, flexível e fácil de manter. Neste post, vimos como implementar o Factory Pattern em Java através de um exemplo de aplicativo de simulação de zoológico. Ao aplicar esse padrão em seus projetos, você pode melhorar a organização e a escalabilidade do seu código.

Além disso, o Factory Pattern pode ser estendido para lidar com cenários mais complexos e diversos, como a criação de objetos com dependências, a seleção de implementações em tempo de execução e a otimização do desempenho por meio do reuso de objetos.

Se você deseja aprofundar seus conhecimentos em padrões de design e como eles podem melhorar a qualidade do seu código, considere estudar outros padrões criacionais, como o Singleton, Prototype e Builder, bem como padrões estruturais e comportamentais, como o Adapter, Decorator, Observer e Strategy. Aprender e aplicar esses padrões ajudará você a escrever código mais eficiente, robusto e escalável.

blog@nosbielc.com

Made with ❤️ in Quebec, CA.