码迷,mamicode.com
首页 > 编程语言 > 详细

java-对象的创建

时间:2017-04-24 18:59:33      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:null   分享   instance   好的   blog   erp   安全   提供者   shm   

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

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

举例如下:

技术分享
  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-对象的创建

标签:null   分享   instance   好的   blog   erp   安全   提供者   shm   

原文地址:http://www.cnblogs.com/dmir/p/6758189.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!