工厂方法模式示例
程序员文章站
2022-03-20 14:01:28
...
//工厂方法模式示例:
package innerclasses;
import static net.mindview.util.Print.*;
interface Service{
void method1();
void method2();
}
interface ServiceFactory{
Service getService();
}
class Implementation1 implements Service{
private Implementation1 (){} //private的构造函数,只能在当前类中调用此方法创建对象
public void method1(){
println("Implementation1 method1");
}
public void method2(){
println("Implementation1 method2");
}
public static ServiceFactory factory = //因为只需要一个factory对象,所以这里定义为static
new ServiceFactory(){ //作为工厂的类使用匿名类来实现,
public Service getService(){
return new Implementation1();
}
};
}
class Implementation2 implements Service{
private Implementation2(){}
public void method1(){
System.out.println("Implementation2 method1");
}
public void method2(){
System.out.println("Implementation2 method2");
}
public static ServiceFactory factory =
new ServiceFactory(){
public Service getService(){
return new Implementation2();
}
};
}
public class Factories {
public static void serviceConsumer(ServiceFactory fact){
Service s = fact.getService();
s.method1();
s.method2();
}
public static void main(String[] args) {
serviceConsumer(Implementation1.factory);
serviceConsumer(Implementation2.factory);
}
}