首页 > 代码库 > java-对象的创建

java-对象的创建

一、考虑用静态工厂方法来替代构造器

  • 静态工厂与设计模式中的工厂方法模式不同
  • 与构造器比第一大优势:他们有具体的名称,而不是类名
  • 与构造器比第二大优势:不必在每次调用它的时候都创建一个新对象
  • 与构造器比第三大优势:它可以返回原返回类型的任何子类型的对象
  • 与构造器比第四大优势:在创建参数化实例时,可以使代码变得更加简洁

举例如下:

技术分享
  1 public static Boolean valueof(boolean a){
  2 		return a?Boolean.TRUE:Boolean.FALSE;
  3 	}
View Code

二、服务提供者框架

  • 服务接口:提供者实例
  • 提供者注册API:系统用来注册实现,让客服端访问它们
  • 服务访问API:客服端用来获取服务的实例,是一个灵活的静态工厂

举例如下:

技术分享
  1 public interface Service{
  2 		//service-specific methods go here
  3 	}
  4 	
  5 	public interface Provider{
  6 		Service newService();
  7 	}
  8 	
  9 	public  class Services{
 10 		private Services(){}
 11 		
 12 		private static final Map<String, Provider> providers=new ConcurrentHashMap<String, Provider>();
 13 		public static final String DEFAULT_PROVIDER_NAME="<def>";
 14 		
 15 		//provider registration API
 16 		public static void  registerDefaultProvider(Provider p){
 17 			registerProvider(DEFAULT_PROVIDER_NAME, p);
 18 		}
 19 		public static void registerProvider(String name,Provider p){
 20 			providers.put(name, p);
 21 		}
 22 		
 23 		//service access API
 24 		public static Service newInstance(){
 25 			return newInsance(DEFAULT_PROVIDER_NAME);
 26 		}
 27 		public static Service newInsance(String name){
 28 			Provider provider= providers.get(name);
 29 			if(provider==null){
 30 				throw new IllegalArgumentException("No provider registered with name:"+ name);
 31 			}
 32 			return provider.newService();
 33 		}
 34 	}
 35 
View Code

三、Builder 模式

  • 当遇到多个构造器参数时考虑使用构建器
  • 与重叠构造器模式、JavaBean模式相比,既能保证像重叠构造器模式那样安全,又能保证JavaBeans模式那么好的可读性,而且也更易于扩展

java-对象的创建