创建和销毁对象
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.避免使用终结方法
尽量不要在你的类中覆盖finalize方法,然后在在里面写一些释放你的类中资源的语句。
网友评论