У програмуванні на основі класів шаблон фабричного методу є шаблоном створення, який використовує фабричні методи для вирішення проблеми створення об'єктів без вказівки точного класу об'єкта, який буде створений. Це робиться шляхом створення об'єктів через виклик фабричного методу або зазначеного в інтерфейсі, або реалізованого дочірніми класами, або реалізованого в базовому класі, або необов'язково перевизначеного похідними класами, а не шляхом виклику конструктора.
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); } }