------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
import staticnet.mindview.util.Print.*;
interface Service{
void method1();
void method2();
}
interfaceServiceFactory {
Service getService();
}
classImplementation1 implements Service {
Implementation1() {} // Package access
public void method1(){print("Implementation1 method1");}
public void method2(){print("Implementation1 method2");}
}
classImplementation1Factory implements ServiceFactory {
public Service getService() {
return new Implementation1();
}
}
classImplementation2 implements Service {
Implementation2() {} // Package access
public void method1(){print("Implementation2 method1");}
public void method2(){print("Implementation2 method2");}
}
classImplementation2Factory implements ServiceFactory {
public Service getService() {
return new Implementation2();
}
}
public classFactories {
public static voidserviceConsumer(ServiceFactory fact) {
Service s = fact.getService();
s.method1();
s.method2();
}
public static void main(String[] args) {
serviceConsumer(newImplementation1Factory());
// Implementations are completelyinterchangeable:
serviceConsumer(newImplementation2Factory());
}
} /* Output:
Implementation1method1
Implementation1method2
Implementation2method1
Implementation2method2
*///:~
工厂对象上调用的是创建方法,而该工厂对象将生成接口的某个实现的对象。理论上,代码将完全与接口的实现分离,这就使得我们以透明的将某个实现替换为另一个实现。