Bei der klassenbasierten Programmierung ist das Factory-Methodenmuster ein Erstellungsmuster, das Factory-Methoden verwendet, um das Problem der Erstellung von Objekten zu lösen, ohne die genaue Klasse des zu erstellenden Objekts anzugeben. Dies erfolgt durch Erstellen von Objekten durch einen Factory-Methodenaufruf – entweder in einer Schnittstelle angegeben oder durch untergeordnete Klassen implementiert oder in einer Basisklasse implementiert oder optional durch abgeleitete Klassen überschrieben, anstatt einen Konstruktor aufzurufen.
interface ImageReader { DecodedImage getDecodeImage(); } class DecodedImage { private String image; public DecodedImage(String image) { this.image = image; } @Override public String toString() { return image + ": is decoded"; } } class GifReader implements ImageReader { private DecodedImage decodedImage; public GifReader(String image) { this.decodedImage = new DecodedImage(image); } @Override public DecodedImage getDecodeImage() { return decodedImage; } } class JpegReader implements ImageReader { private DecodedImage decodedImage; public JpegReader(String image) { decodedImage = new DecodedImage(image); } @Override public DecodedImage getDecodeImage() { return decodedImage; } } public class FactoryMethodDemo { public static void main(String[] args) { DecodedImage decodedImage; ImageReader reader = null; String image = args[0]; String format = image.substring(image.indexOf('.') + 1, (image.length())); if (format.equals("gif")) { reader = new GifReader(image); } if (format.equals("jpeg")) { reader = new JpegReader(image); } assert reader != null; decodedImage = reader.getDecodeImage(); System.out.println(decodedImage); } }