package com.ttjslbz.factory;
public interface Api {
void functionA();
}
定义实现A
public class ImplA implements Api {
@Override
public void functionA() {
// TODO Auto-generated method stub
System.out.print("This is implement A for Api");
}
}
定义实现B
public class ImplB implements Api {
@Override
public void functionA() {
// TODO Auto-generated method stub
System.out.print("This is implement B for Api");
}
}
工厂
public class Factory {
// 预加载需要读取的配置文件
private static Properties p;
static {
InputStream in = Factory.class
.getResourceAsStream("Factory.properties");
;
p = new Properties();
try {
p.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static Api creatApi(String propertie) {
Apiapi = null;
try {
api = (Api)Class.forName(p.getProperty(propertie)).newInstance();
}catch(InstantiationException e){
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return api;
}
}
客户端
public class Client {
public static void main(String[] args) {
Api apiA = Factory.creatApi("IMPLEMENTA");
apiA.functionA();
Api apiB= Factory.creatApi("IMPLEMENTB");
apiB.functionA();
Api apiC = Factory.creatApi("IMPLEMENTC");
apiC.functionA();
}
}