《有些模式》- 服务提供者
?/** * 服务接口 * @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();}}?