标签:
使用静态工厂方法代替构造器的几大优势:
静态工厂方法的一些惯用名称:
利用静态工厂方法实现的服务提供者框架模式 :
服务接口 :
1 public interface Service { 2 /** 3 * n种服务 4 */ 5 //..... 6 }
服务提供者接口:
1 public interface Provider { 2 /** 3 * 可以提供的n种服务 4 */ 5 Service newService(); 6 }
具有服务提供者注册API和服务访问API的 服务类:
1 public class Services { 2 //私有化构造器 通过静态工厂方法来得到想要的Service实例 3 private Services(){} 4 //用来保存服务提供者对象的Map对象 5 private static final Map<String, Provider> providerMap = new HashMap<String, Provider>(); 6 //服务提供者对象的默认 key值 7 private static final String DEFAULT_NAME = "<def>"; 8 9 //提供静态工厂方法 将未提供key值得服务提供者对象 添加到Map对象中 10 public static void registerProvider(Provider provider) 11 { 12 registerProvider(Services.DEFAULT_NAME, provider); 13 } 14 15 //提供静态工厂方法 将提供key值的服务提供者对象 添加到Map对象中 16 public static void registerProvider(String name , Provider provider) 17 { 18 providerMap.put(name, provider); 19 } 20 21 //提供静态工厂方法 得到最终的服务对象 22 public static Service newInstance() 23 { 24 return newInstance(DEFAULT_NAME); 25 } 26 //提供静态工厂方法 得到最终的服务对象 27 public static Service newInstance(String name) 28 { 29 Provider p = providerMap.get(name); 30 31 if(p == null) 32 { 33 throw new IllegalArgumentException("This provider not found"); 34 } 35 36 return p.newService(); 37 } 38 }
标签:
原文地址:http://www.cnblogs.com/wangliyue/p/4422288.html