java-对象的创建
Posted 奋斗的珞珞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java-对象的创建相关的知识,希望对你有一定的参考价值。
一、考虑用静态工厂方法来替代构造器
- 静态工厂与设计模式中的工厂方法模式不同
- 与构造器比第一大优势:他们有具体的名称,而不是类名
- 与构造器比第二大优势:不必在每次调用它的时候都创建一个新对象
- 与构造器比第三大优势:它可以返回原返回类型的任何子类型的对象
- 与构造器比第四大优势:在创建参数化实例时,可以使代码变得更加简洁
举例如下:
1 public static Boolean valueof(boolean a){ 2 return a?Boolean.TRUE:Boolean.FALSE; 3 }
二、服务提供者框架
- 服务接口:提供者实例
- 提供者注册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
三、Builder 模式
- 当遇到多个构造器参数时考虑使用构建器
- 与重叠构造器模式、JavaBean模式相比,既能保证像重叠构造器模式那样安全,又能保证JavaBeans模式那么好的可读性,而且也更易于扩展
以上是关于java-对象的创建的主要内容,如果未能解决你的问题,请参考以下文章
如何在用java创建的布局内创建地图片段(GoogleMap)?
Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段