java代码优化(一)——创建和销毁对象

本文探讨了如何使用静态工厂方法代替构造器进行对象创建,以提高代码性能和可读性。静态工厂方法的优势在于避免重复创建对象、提供更具描述性的方法名,以及在某些场景下返回子类对象。同时,文章提到了服务提供者框架的概念,并分析了静态工厂方法的劣势。此外,还介绍了如何通过私有构造器和枚举强化单例属性,以及如何避免重复创建对象和消除过期对象引用,以优化内存管理。
摘要由CSDN通过智能技术生成

用静态工厂方法代替构造器

准备知识

自动装箱:从基本数据类型转换成包装类型

自动拆箱:从包装类型转换成基本数据类型

包装类:

  • number(数字类型)
  1. Byte(byte)
  2. Short(short)
  3. Integer(int)
  4. Long(long)
  5. Double(double)
  6. Float(float)
  • Character(字符类型)
  • Boolean(布尔值)

利用静态工厂方法来创建对象

当我们利用构造器创建对象时,如果构造器的参数很多会造成new的对象里要填写很多参数,很容易导致错误。而且每次都创建一个新的对象,肯定会占用大量内存,所以使用静态工厂方法可以解决这些问题。

private class Person {

	private static Person person = null;
	
	public static Person getInstance(){
		if(person == null){
			person = new Person();
		}
		return person;
	}
	
}

静态工厂方法的优势

①每次调用静态工厂方法,都不会重复创建对象。

利用不可变类的设计原则,当对象总是重复创建,并且创建对象的代价很高,可以提高性能

final class Immutable {
	
	private static final Immutable immutable = new Immutable();
	
	public static Immutable getInstance(){
		return immutable;
	}

	public static Immutable getImmutable() throws CloneNotSupportedException {
		return (Immutable) immutable.clone();
	}
	
}

②静态工厂方法名可以描述参数以及要返回对象,而构造器却不可以。

③静态工厂方法可以返回原对象类型的子类对象

例如jdk1.5中java.util.EnumSet类,它的静态工厂方法中根据枚举类型的元素个数来确定实例化哪个子类对象,当元素个数小于64时,实例化RegularEnumSet对象,大于64则实例化JumboEnumSet对象

    /**
     * Creates an empty enum set with the specified element type.
     *
     * @param elementType the class object of the element type for this enum
     *     set
     * @throws NullPointerException if <tt>elementType</tt> is null
     */
    pu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值