EffectiveJava(1) 构造器和静态工厂方法
来源:互联网 发布:英法不入欧盟 知乎 编辑:程序博客网 时间:2024/05/19 22:48
构造器和静态工厂方法
**构造器是大家创建类时的构造方法,即使不显式声明,它也会在类内部隐式声明,使我们可以通过类名New一个实例.静态方法是构造器的另一种表现形式**
主题要点:何时以及如何创建对象,何时以及如何避免创建对象,如何确保对象能够适时的销毁,以及如何管理对象销毁之前必须进行的清理动作
1.类通过静态工厂方法让客户端获取自身实例而不通过构造器
优势:-有名称(如果构造器本身没有确切的描述正被返回的对象,那具有适当名称的静态工厂1会更容易使用,产生的客户端代码也更容易阅读BigInteger.probablePrime>>BigInteger(int,int,Random))
-不必每次调用它的时候都创建一个新对象
-它们可以返回原返回类型的任何子类型的对象(灵活性)
-在创建参数化类型实例的时候,使代码变得更加简洁(必须指明类型参数)
public static <K,V> HashMap<K,V> newInstance(){ return new HashMap<K,V>} Map<String,List<String>> map = HashMap.newInstance();
可以将这样的静态方法放在自己的参数化的类中
缺点:-类如果不含有公有的或者受保护的构造器,就不能被子类化
-它们与其他的静态方法实际上没有任何区别
静态工厂方法的使用场景
-当一个类需要多个带有相同签名的构造器时
2.服务提供者框架
多个服务提供者实现一个服务,系统为服务提供者的客户端提供多个实现,并把它们从多个实现中解耦出来
服务接口:提供者
提供者注册API:系统
服务访问API:客户端用来获取服务实例 >> 灵活的静态工厂
服务提供者接口:提供者负责创建其实现的实例
3.惯用名称
valueOf – 类型转换方法.该方法返回的实例与它的参数具有相同的值
of – valueOf的一种简洁写法
getInstance – 返回的实例是通过方法的参数来描述的.对于单例来说,该方法没有参数并返回唯一实例
newInstance – 确保返回的每个实例都与其他实例不同,其他功能同上
getType – type表示工厂方法中所返回的对象类型.在工厂方法处于不同类中使用
newType – 同上,类似newInstance
- EffectiveJava(1) 构造器和静态工厂方法
- EffectiveJava-考虑用静态工厂方法代替构造器
- EffectiveJava-1.考虑使用静态工厂方法替代构造方法
- 静态方法代替构造器-effectiveJava读书笔记
- EffectiveJava 第1条 :创建和销毁对象--考虑用静态方法代替构造器
- 构造器和静态工厂方法
- effective--构造器和静态工厂方法
- Effective.Java 读书笔记(1)静态工厂和构造方法
- 创建和销毁对象(1)——考虑用静态工厂方法代替构造器
- 静态工厂方法和构造方法
- 第1条:考虑用静态工厂方法代替构造器(第一章:创建和销毁对象)
- 静态工厂方法与构造器
- 静态工厂方法与构造器
- 用静态工厂方法代替构造器
- 用静态工厂方法代替构造器
- 采用静态工厂方法替代构造器
- 静态工厂方法VS构造器
- 用静态工厂方法代替构造器
- 当编辑内容改变是后 选中内容 Range 的startOffset会被重置
- Node.js 全局变量命名空间与命名空间中require模块的冲突
- 测试人员应该如何发展?
- C#读取Excel三种方式及比较
- Android中IDE、ADT、SDK、JDK、NDK, Gradle的解释
- EffectiveJava(1) 构造器和静态工厂方法
- 【Python】爬行某手机号归属地网站实现'脱裤'+源码分析
- 第十九天作业1
- WebView的例子
- NOI2002 银河英雄传说
- jzoj 3837 心灵终结
- EffectiveJava(2)应对多个构造函数应当使用构建器
- 汇编基础:函数调用堆栈
- 聚类算法