Abstract Factory
Factory of factories. To keep things simple you can understand it like, you have a set of ‘related’ factory method design pattern. Then you will put all those set of simple factories inside a factory pattern. So in turn you need not be aware of the final concrete class that will be instantiated.
XML API implements abstract factory. There is a class name SchemaFactory. This acts as a factory and supports implemenation of multiple schemas using abstract factory design pattern.
The Factory Method Design Pattern in Java
Parent Class:
=============
public interface Shape {
public String draw();
}
Derived Class 1
===============
public class Circle implements Shape {
@Override
public String draw() {
return “Circle draw ...“;
}
}
Derived Class 2:
===============
public class Triangle implements Shape {
@Override
public String draw() {
return “Triangle draw …”;
}
}
Derived Class 3:
===============
public class Rectangle implements Shape {
@Override
public String draw() {
return “Rectangle draw …”;
}
}
Factory Class:
==============
public class ShapeFactory {
public Shape getShape(String shapeType) {
Shape shape = null;
if (“circle”.equals(shapeType))
shape = new Circle();
else if (“triangle “.equals(shapeType))
shape = new Triangle ();
else if (“rectangle “.equals(shapeType))
shape = new Rectangle ();
return shape;
}
XML API implements abstract factory. There is a class name SchemaFactory. This acts as a factory and supports implemenation of multiple schemas using abstract factory design pattern.
The Factory Method Design Pattern in Java
Parent Class:
=============
public interface Shape {
public String draw();
}
Derived Class 1
===============
public class Circle implements Shape {
@Override
public String draw() {
return “Circle draw ...“;
}
}
Derived Class 2:
===============
public class Triangle implements Shape {
@Override
public String draw() {
return “Triangle draw …”;
}
}
Derived Class 3:
===============
public class Rectangle implements Shape {
@Override
public String draw() {
return “Rectangle draw …”;
}
}
Factory Class:
==============
public class ShapeFactory {
public Shape getShape(String shapeType) {
Shape shape = null;
if (“circle”.equals(shapeType))
shape = new Circle();
else if (“triangle “.equals(shapeType))
shape = new Triangle ();
else if (“rectangle “.equals(shapeType))
shape = new Rectangle ();
return shape;
}