虽然工作了两年仍然是个彩笔,就从effective java这本书开始学吧!
静态工厂方法
优点:有名称,不必每次调用创建新对象,可返回原返回类型的任何子类型对象,参数实例化更简洁。
缺点:如果不含共有的或受保护的构造器 就不能被实例化
不必每次创建新对象:感觉针对的是不可变类
参数实例化更简洁:类型推导(在JAVA7之后版本中有丰富了很多类型推导概念)
//较为繁琐的写法
Map<String, List<String>> map = new HashMap<String, List<String>>();
//若HashMap提供该静态工厂方法
public static <K, V> HashMap<K, V> newInstance(){
return new HashMap<K, V>();
}
//通过静态工厂提供的简洁写法
Map<String, List<String>> map = HashMap.newInstance();
builder模式
核心在于创建对象时 “方便设置参数” 和 “和线程安全”。
1. 构造
eg: new People(name,gender,age,address等); 设置参数却没有正好只有臃肿参数的构造时,无法挑选最恰当的构造
2. getter() setter()
开放getter()和settting()方法,阻止了改类做成不可变的可能,这就需要保证线程安全(!?)
3. builer模式<