effective Java 第三版学习笔记

创建对象类型的

1,静态工厂方法代替构造器

  • 静态工厂方法有名称,不容易混乱他的作用
  • 不必再每次调用他的时候创建实例,创建实例的代价是高的,可以重复利用缓存的对象
  • 静态工厂甚至能返回子类对象,例如在接口上(Java8 )的静态方法上,返回一个直接可以用的类
  • 根据参数值,决定不同的返回类型(貌似和上面有点像
  • 返回的类型,可以在写静态工厂时候不存在(貌似用在rpc方面)
  • 缺点
  • 如果不包含公有或包含的构造器,就不能让子类实例化
  • javadoc不能很好解释
  • ps
  • vauleOf,转换方法
  • instance或者getInstance,通过方法参数获得实例,但不能说每次实例都是一样的,A a =  A.getInstance(option)
  • create或者createInstance,通过静态方法获得实例,每次都说新的实例
  • getType,在不同类中返回不同的对象,type可以是其他意思,比如getA,getB
  • newType,和上面一样,返回新的实例

2,遇到多个构造器参数的时候,使用构建器

  • 构建器有同样的参数列表
  • 构建器构造函数写必须的参数,后面再添加可选的参数
  • build方法返回实例的引用

3,用枚举强化单例模式

4,在一些静态工具类中,将构造方法私有化,不能abstract抽象化,别人还以为你是专门用来继承的

5,不要用单例和静态工具类来实现一个或多个资源的类(他们都只能假设有一种资源)(静态工具类不能用状态),因为资源的行为会影响类的行为,应该将资源交给工厂(spring),通过他们进行依赖注入来创建类

6,避免创建不必要的对象

  • string
  • 像解析token,正则表达式,这些,缓存创建好的对象
  • 自动装箱问题,尽量使用基本类型

7,消除过期的对象引用

  • 像栈这种需要自己维护一些数组的需要引用指空来防止内存泄漏
  • 缓存也会内存泄漏,当缓存的生命周期由该键的外部引用决定时,可以用weakhashmap

8,-

9,使用try-with-resource 代替try- catch

所有对象通用的方法

 

猜你喜欢

转载自www.cnblogs.com/vhyc/p/10859986.html