Effective Java 笔记 创建和销毁对象


创建和销毁对象

1.考虑使用静态工厂方法代替构造器

优点:

1.1静态工厂方法存在名称,在类需要多个带有相同标签的构造器是,可通过不同的名字进行区分

1.2不必每次调用时创建一个新对象

1.3返回原返回类型的任意子类型对象

1.4代码更加简洁

缺点:

1.1类若不含公有或受保护构造器,不能被子类化

1.2与其他的静态方法实际上没有任何区别


2.多个构造器时要考虑用构建器


javabean的缺陷:
javabean模式有一个致命的缺陷,就是它的构造过程分部到几次调用中,而不是一次性完成的。

javabean模式还有第二个缺点:如果对象中含有final修饰的字段,那么javabean模式将不能对其执行setter操作。


3.私有构造器或枚举类型强化Singleton属性

3.1饿汉模式

通过反射获得单例类的构造函数,由于该构造函数是private的,通过setAccessible(true)指示反射的对象在使用时应该取消Java语言访问检查,使得私有的构造函数能够被访问,这样使得单例模式失效。

解决:可在构造器中判断instance是否存在,从而避免

通过序列化和反序列化也可以破解单例模式

解决:反序列化时,如果定义了readResolve()则直接返回此方法指定的对象,而不需要在创建新的对象!

3.2懒汉模式

构造器私有、公共的静态方法


3.3枚举类



4.通过私有构造器强化不可实例化的能力



5.避免创建不必要的对象

例如String类型,可直接重用

重用的代码段,可用static进行包含


6.消除过期的对象引用

只要类是自己管理内存,就应该警惕内存泄漏问题。一旦元素被释放掉,则该元素中包含的任何对象引用都应该被清空。


7.避免使用终结方法

第七条:避免使用终结方法(finalizer)

尽量不要在你的类中覆盖finalize方法,然后在在里面写一些释放你的类中资源的语句。



你可能感兴趣的:(Effective Java 笔记 创建和销毁对象)