/**
* 服务接口
* @author Macrotea
*
*/
public interface Service {
public abstract void doSomeService();
}
/**
* 服务提供者接口
* @author Macrotea
*
*/
public interface Provider {
Service newService();
}
public class ServiceFactory {
private static final String DEFAULT_PROVIDER_NAME = "<def>";
private static final HashMap<String, Provider> providerMap = new HashMap<String, Provider>();
/*注册服务提供者*/
public static void rigiserProvider(Provider p){
providerMap.put(DEFAULT_PROVIDER_NAME, p);
}
public static void rigiserProvider(String name,Provider p){
providerMap.put(name, p);
}
/*获得服务*/
public static Service newInstanse() throws Exception{
return newInstanse(DEFAULT_PROVIDER_NAME);
}
public static Service newInstanse(String name){
Provider p=providerMap.get(name);
if(p==null){
throw new IllegalArgumentException("系统根据名字没有找到提供者出错:");
}
return p.newService();
}
}