2017-04-08
基本原则
清晰性和简洁性最为重要:模块(指可重用的软件组件,从单个方法到包含多个包的复杂系统,都可以是一个模块)的用户永远也不应该被模块的行为所迷惑(那样就不清晰了);模块尽可能小,但又不能太小;代码应该被重用而不是被拷贝,模块之间的依赖性应该尽可能降到最小。
错误应该尽早被检测出来,最好是在编译阶段。
第1条:考虑用静态工厂方法代替构造器
考虑用静态工厂方法返回类的实例,例如:
public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
这样做的优势在于:
1、静态工厂方法具有有意义的名字,见名知意:
如:BigInteger.probablePrime方法得到可能为素数
2、不必在每次调用时都创建新的对象:
这使得不可变类可以被预先创建、避免创建不必要的重复类
3、子类化:可以返回原返回类型的任何子类对象
这种技术适用于基于接口的框架,例如Guava集合接口对集合、同步集合的便利实现;静态工厂方法返回对象所属的类,在编写包含该静态工厂方法的类时可以不必存在,这种灵活的静态工厂方法构成了服务提供者框架。