第2章 创建和销毁对象
第1条 用静态工厂方法代替构造器 优点 1.静态工厂方法与构造器不同的第一大优势在于,他们有名称 2.不必每次调用他们都创建一个新对象,如Boolean中的valueof,都是内部自己维护的两个单例,根据传入的参数不同,分别返回True或者False public static final Boolean TRUE = new Boolean(true); public static final Boolean FALSE = new Boolean(false); public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); 3.返回原返回类型的任何子类型的对象,API可以返回对象,同时又不会使对象的类变成公有(这里理解为Collections【Collections的构造器为private】中的东西,里面有很多静态内部类,通过暴露静态公有的方法创建无法new出来的对象) 4.所有返回的对象的类可以随着每次调用而发生变化,这取决于静态工厂方法的参数值 5.方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不存在(理解为解耦,可以先没有具体的实现类,如JDBC返回Connection) 缺点 1.类如果不含有公有的或者受保护的构造器,就不能被子类化(可能意思是如果构造函数私有