public interface Service { void method1(); void method2(); }
public interface ServiceFactory { Service getService(); }
public class Implementation1 implements Service {
@Override public void method1() { }
@Override public void method2() { }
public static ServiceFactory factory = new ServiceFactory() { @Override public Service getService() { return new Implementation1(); } }; }
public class Implementation2 implements Service {
@Override public void method1() { }
@Override public void method2() { }
public static ServiceFactory factory = new ServiceFactory() { @Override public Service getService() { // TODO Auto-generated method stub return new Implementation2(); } }; }
public class Factories {
public static void serviceConsumer(ServiceFactory factory) { Service s = factory.getService(); s.method1(); s.method2(); }
public static void main(String[] args) { serviceConsumer(Implementation1.factory); serviceConsumer(Implementation2.factory); }