《effectiv java》是一本经典的java类的书籍,它可以教我更加高效的编写代码。
静态工厂方法与构造器不同的第一大优势在于,它们有名称。
----就像标识一样,可以通过名字,很快的找到它,把软件想象成一个家庭,用它的时候,直接用名字叫“嘿,老三,我要用你的刀和菜板”,用到二胖的时候就叫“嘿,二胖,我要用你的锅和碗”。
一个类只能有一个带有指定签名的构造器 。如果想要另一个构造器,只需要参数列表顺序不同即可,但这种方法不太好记,没有名字好叫,二胖,老三的有指向性。
我遇到过一个问题,已经有一个A(String name,String phone)这样一个构造器,我想有另一个A(String attr,String email)这样就会创建失败,如果用上静态工厂方法就好说了
@Data
@Builder
public class BlackListEntity {
// 唯一标识
private Integer pkid;
// 黑名单的url
private String blackUrl;
// 静态工厂方法
public static BlackListEntity getInstance(String blackUrl){
BlackListEntity build = BlackListEntity.builder().blackUrl(blackUrl).build();
return build;
}
}
第二大优势:不必在和线次调用它们时都创建一个新对象
与单例有关
静态工厂方法与构造器不同的第三大优势在于:它们可以返回原返回类型的任何子类型的对象
return 子类();
这个总结的不错,我已经用到项目中了只是只用到了优点是名称的部分,所以没办法很深入的写另外的部分