[关闭]
@puke3615 2016-08-23T02:57:34.000000Z 字数 1498 阅读 968

BuilderGenerator

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

一、 快速接入

1. 配置apt依赖

外层gradle添加

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

内层build.gradle添加

  1. apply plugin: 'com.neenbedankt.android-apt'
2. 配置该框架依赖

内层build.gradle添加

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

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

3. 使用姿势

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

  1. public class Dog {
  2. private String name;
  3. private int age;
  4. private String sex;
  5. private Color color;
  6. @Builder("configure")
  7. Dog(@Item("customName") String name, @Item int age, @Item String sex, Color color) {
  8. this.name = name;
  9. this.age = age;
  10. this.sex = sex;
  11. this.color = color;
  12. }
  13. }

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

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

  1. // this is a generated file.
  2. package com.puke.buildergeneator;
  3. public final class DogBuilder {
  4. private String customName;
  5. private int age;
  6. private String sex;
  7. public final DogBuilder configureCustomName(String customName) {
  8. this.customName = customName;
  9. return this;
  10. }
  11. public final DogBuilder configureAge(int age) {
  12. this.age = age;
  13. return this;
  14. }
  15. public final DogBuilder configureSex(String sex) {
  16. this.sex = sex;
  17. return this;
  18. }
  19. public final Dog build() {
  20. return new Dog(customName, age, sex, null);
  21. }
  22. }
4. 几点说明

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

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

表示该类是要生成Builder类

@Builder中注入了“configure”

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

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

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

@Item中注入“customName”

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

二、 项目源码

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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注