O padrão de fábrica é um dos padrões de design mais usados em Java. Este tipo de padrão de design vem sob o padrão de criação, pois este padrão fornece uma das melhores maneiras de criar um objeto.
No padrão de fábrica, criamos o objeto sem expor a lógica de criação para o cliente e nos referimos aos recém-criados objeto usando uma interface comum.
Implementação
Iremos criar uma interface Shape e classes concretas implementando a interface Shape. Uma classe de fábrica ShapeFactory é definida como uma próxima etapa.
FactoryPatternDemo, nossa classe de demonstração usará ShapeFactory para obter um objeto Shape. Ela passará informações (CIRCLE / RETANGLE / SQUARE) para ShapeFactory para obter o tipo de objeto de que precisa.
Etapa 1
Crie uma interface.
Shape.java
public interface Shape { void draw();}
Etapa 2
Crie classes concretas implementando a mesma interface.
Rectangle.java
public class Rectangle implements Shape { @Override public void draw() { System.out.println("Inside Rectangle::draw() method."); }}
Quadrado .java
public class Square implements Shape { @Override public void draw() { System.out.println("Inside Square::draw() method."); }}
Circle.java
public class Circle implements Shape { @Override public void draw() { System.out.println("Inside Circle::draw() method."); }}
Etapa 3
Crie um Factory para gerar o objeto da classe concreta com base nas informações fornecidas.
ShapeFactory.java
Etapa 4
Use o Factory para obter o objeto da classe concreta passando uma informação como tipo.
FactoryPatternDemo.java
Etapa 5
Verifique a saída.
Inside Circle::draw() method.Inside Rectangle::draw() method.Inside Square::draw() method.