知识点上本书需要会Java语法和lang、util、io库,涉及concurrent和function包。
内容上主要和设计模式相关,代码风格力求清晰+简洁,代码尽量复用,组件尽量少依赖,错误尽早发现。
第1个经验法则:用静态工厂方法代替构造器(consider static factory methods instead of constructors)
下面是Boolean的静态工厂方法:
一、静态工厂方法与构造器不同的第一大优势在于:它们有名称。
如果构造器的参数本身没有确切地描述正被返回的对象,那么具有适当名称的静态工厂会更容易使用,产生的客户端代码也更易于阅读。 什么意思呢?我们看一个例子:
假设我们有一个表示图书的类,它需要标题和作者作为创建对象的参数。
当我们想创建一本新书时,我们会这样调用构造器:
这个调用很直接,但方法名Book跟类名一样是个名词,没有传达出创建动作的任何特殊含义或上下文信息。
现在我们改用静态工厂方法来创建 Book 实例,并给这个方法一个有意义的名字,比如 createFromTitleAndAuthor ,代码看起来会是这样的:
创建同样一本《Effective Java》的书,现在代码变成了:
</