java-对象的创建

Posted 奋斗的珞珞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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-对象的创建的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法关闭代码片段中的命名建议?

java 代码片段

如何在用java创建的布局内创建地图片段(GoogleMap)?

VSCode创建自定义用户片段

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

有没有办法使用相同的布局动态创建片段并向它们显示数据?