Crie a interface
package factory;
public interface Polygon {
String getDescription();
}
Crie as classes concretas
package factory;
public class Triangulo implements Polygon{
@Override
public String getDescription() {
return "Triangulo";
}
}
package factory;
public class Square implements Polygon{
@Override
public String getDescription() {
return "Square";
}
}
package factory;
public class Pentagon implements Polygon{
@Override
public String getDescription() {
return "Pentagon";
}
}
Crie uma classe Factory
package factory;
public class PolygonFactory {
public static Polygon createPolygon(int numberOfSides) {
if (numberOfSides == 3) {
return new Triangulo();
}
if (numberOfSides == 4) {
return new Square();
}
if (numberOfSides == 5) {
return new Pentagon();
}
return null;
}
}
Utilize a classe Factory para criar objetos, em vez de instanciá-los diretamente.
package factory.main;
import factory.Polygon;
import factory.PolygonFactory;
public class App {
public static void main(String[] args) {
Polygon polygon = PolygonFactory.createPolygon(4);
System.out.print(polygon.getDescription());
}
}