Aşağıdaki örnek verilen parametre değerine göre farklı class'lardan nesne yaratılıp döndürülmektedir.
public interface Logger {}
public class TestLogger implements Logger {}
public class ProductionLogger implements Logger{}
Uygulamada TestLogger mı ProductionLogger mı kullanılacağına karar vermek için LoggerFactory class'ı kullanılır :
public class LoggerFactory { public Logger createLogger(){ // stage bilgisi konfigurasyon dosyalarından bulunur String stage="PRODUCTION"; // veya "TEST" olur.. if(stage.equals("PRODUCTION")){ return new ProductionLogger(); }else if(stage.equals("TEST")){ return new TestLogger(); }else{ throw new RuntimeException("Logger bulunamadı"); } } }
Kullanımı aşağıdaki gibidir :
public class Test { public static void main(String[] args) { LoggerFactory factory=new LoggerFactory(); Logger logger=factory.createLogger(); } }