静态工厂方法
优点:
有名称,可读性高
不必每次都创建一个新类
可以返回静态类型的任意子类型对象 ==> 需要强制转换
缺点:
类如果不含公有的或者受保护的构造器,就不能被子类化
重叠构造器
但其有自身的缺点,若太多参数则会出错或传入无意义的参数值。可读性不高
解决办法:JavaBean的使用,可读性高
类feng封装的私有属性
类无参构造方法
public的get和set方法
javaBean也有确定,所以构建了Building模式
Building模式 关键点:
一个产品类 - -> 需要被构建的产品
一个抽象Building类 --> 隔离产品组件的构建
一个具体构建产品的Build实现类 -->产品组件的具体构建
一个组装类 --> 组件与产品的组装
作用:构建复杂对象的过程和组成部分解耦
用私有构造器或者枚举类型强化Singleton属性
public class A{
private static final A INSTANCE = new A();
private A(){}
public static A getInstance(){
return INSTANCE;
}
}
通过私有构造器强化不可实例化的能力
构造器的修饰符用private 修饰
避免创建不必要的对象
静态的优先于构造器的方法API中
优先使用基本类型,而不是包装类型,不然会创建多个构造器;但是不是不能创造对象的方法,小量的创建对象增加代码qin清晰,简洁功能。
“保护性拷贝” 小量创建对象
消除过期对象引用
发生内存泄露时间;内存泄露常见来源于缓存;内存泄露另一来源于监听器和其他回调;
weakHashMap中
Heap剖析工具查询内存泄露
避免使用终结方法
try-finally
如关闭资源文件,try中实际的操作,到finally中关闭的动作,这之间有个时间段 time,time是不确定的,在不同的JVM中表现不同
必须使用显示的终结方法:
InputStream,OutputStream,java.sql.Connection,前三个的close(),java.util.Timer中cancel
充当安全网效果
try中关闭子类方法;finally中关闭超类方法