使用建造者模式和Lombok簡化代碼
阿新 • • 發佈:2019-05-13
容易 name EDA pre 還需要 user sco 不能 str
在項目開發中,我們經常需要構建對象。常見的做法有getter/setter,或者構造器構建對象。
可能會有人寫出類似如下的代碼:
Company company=new Company(); company.setAgentId(agentId); company.setAgentUserId(agentUserId); company.setCompanyName( companyName ); company.setAgentUserName(agentUserName); company.setDomain( domain ); company.setTaxNo( taxNo ); company.setCreateTime( new Date() ); company.setIsauth(1); company.setActivationCode(activationCode); company.setAuthCode(authCode); company.setDomain(domain); company.setUseType(1); company.setContactor(phoneNumber);
也可能寫了一個參數非常冗長,傳參特別容易出錯的構造方法。
我們可以使用Lombok和建造者模式簡化代碼,首先,在Company類上方加入Lombok註解,如下所示:
(註意,Lombok除了要加入依賴包,還需要配置一下。幾分鐘可以搞定,具體做法請百度)
@Data @Builder @AllArgsConstructor @NoArgsConstructor @RequiredArgsConstructor(staticName = "of") public class Company { @NonNull private Integer agentId; @NonNull private Integer agentUserId; private String companyName; private String agentUserName; private String domain; private String taxNo; private Date createTime; private Integer isAuth; private String activationCode; private String authCode; private Integer userType; private String phoneNumber; }
其中的註釋意思如下:
@Builder:可通過Builder模式構建對象。
@NonNull:變量不能為空
@Data:包含了getter、setter、toString、equals、hashcode方法。
@NoArgsConstructor : 生成一個無參數的構造方法。
@AllArgsContructor: 會生成一個包含所有變量的構造方法。
@RequiredArgsConstructor: 會生成一個包含常量,和標識了NotNull的變量 的構造方法。生成的構造方法是private,如果想要對外提供使用可以使用staticName選項生成一個static方法。
加入了@Builder後,那麽可以將代碼改寫成如下:
Company company=Company.builder().agentId(1).agentUserId(1).companyName("google")
.agentUserName("lin").domain("test").taxNo("1111111").createTime(new Date())
.isAuth(1).activationCode("0587-1235").userType(1).phoneNumber("666666666")
.build();
基本形式就是: 類名.builder().build() ,在中間加入變量方法及變量的具體值。
通過這種方式構建對象,沒有那麽多的setter,參數也不容易出錯。
參考資料:
http://kriszhang.com/lombok/
使用建造者模式和Lombok簡化代碼