码迷,mamicode.com
首页 > 其他好文 > 详细

BuilderGenerator

时间:2019-10-18 15:53:46      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:app   cti   需要   targe   oid   adl   com   roi   col   

日常开发中,我们经常会使用到Builder模式,我们一般都是直接手动地去写一个Builder类来使用。这里我们采用APT的方式进行配置生成Builder类。

快速接入

配置apt依赖

外层gradle添加

1
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'

内层build.gradle添加

1
apply plugin: 'com.neenbedankt.android-apt'

配置该框架依赖

内层build.gradle添加

1
2
compile 'com.puke:buildergenerator-api:1.0.0'
apt 'com.puke:buildergenerator-compiler:1.0.0'

到这里,配置部分就结束了,接下来就是使用过程。

使用姿势

这里我们模拟一个需要使用Builder模式的类Dog

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class  {

private String name;
private int age;
private String sex;
private Color color;

("configure")
Dog(@Item("customName") String name, @Item int age, @Item String sex, Color color) {
this.name = name;
this.age = age;
this.sex = sex;
this.color = color;
}
}

然后只需要build一下Project就ok了

我们可以在该Module的“build/generated/source/apt”目录下找到对应的DogBuilder类,如下

1
2
3
4
5
6
7
8
9
10
11
大专栏  BuilderGeneratorline">12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

package com.puke.buildergeneator;

public final class DogBuilder {
private String customName;

private int age;

private String sex;

public final DogBuilder configureCustomName(String customName) {
this.customName = customName;
return this;
}

public final DogBuilder configureAge(int age) {
this.age = age;
return this;
}

public final DogBuilder configureSex(String sex) {
this.sex = sex;
return this;
}

public final Dog build() {
return new Dog(customName, age, sex, null);
}
}

几点说明

整体比较轻巧,使用起来也比较简单,我们可以重点看一下该类的构造方法,接下来几点说明:

构造方法上面加了@Builder注解

表示该类是要生成Builder类

@Builder中注入了“configure”

表示生成注解类的组装子Item的方法前面全部都要加上”configure“关键字,当然这个是可选的,如果不加的话就会直接就直接取方法名

构造方法中加入了@Item注解

加入了@Item注解的参数表示Builder类中可以加入的参数,未加则不能通过Builder加入

@Item中注入“customName”

表示在Builder类中给对应的属性设置的别名,不设时默认去参数名

项目源码

https://github.com/puke3615/BuilderGeneator.git

BuilderGenerator

标签:app   cti   需要   targe   oid   adl   com   roi   col   

原文地址:https://www.cnblogs.com/sanxiandoupi/p/11698467.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!