# 构建器 >[success] 模组`v1.8.0`后添加 在模组`v1.8.0`之后,我提供了一个CQ码构建器接口`CodeBuilder<T>`, 通过此接口可以用较为直观与高效的方式构建一个CQ码对应载体实例。 <br> 因为`CodeBuilder`是一个接口,因此如果要使用此构建器,你可以: - 通过`CodeBuilder`的静态方法`stringBuilder(...)` 或 `kqCodeBuilder(...)` 得到模组内的默认实现类实例 - 通过`KQCodeUtils`的方法`getStringBuilder(...)` 或 `getKQCodeBuilder(...)` 得到模组内的默认实现类实例 - 直接实例化模组内的默认实现类`StringCodeBuilder(...)` 或 `KQCodeBuilder(...)` - 自行实现`CodeBuilder<T>` 其实前三种方式的最终结果都是一样的,那么我便只使用其中一种方式来展示如何使用构建器: ```java // 获取utils KQCodeUtils utils = KQCodeUtils.getInstance(); // 获取string类型的构建器, 并指定构建类型为`music` CodeBuilder<String> stringBuilder = utils.getStringBuilder("music"); // 使用 key-value风格的链式构建器编写代码 String music = stringBuilder .key("type").value("qq") .key("id").value(163154565) .key("magic").value(false) .build(); System.out.println(music); // 获取KQCode类型的构建器,并指定构建类型为`location` CodeBuilder<KQCode> kqCodeBuilder = utils.getKQCodeBuilder("location"); KQCode location = kqCodeBuilder .key("lat").value(2245.52) .key("lon").value(-2135.02) .key("title").value("我的坐标") .build(); System.out.println(location); /* 输出结果: [CQ:music,type=qq,id=163154565,magic=false] [CQ:location,lat=2245.52,lon=-2135.02,title=我的坐标] */ ``` >[info] 构建器相比较于`KQCodeUtils`的`toCq`或`toKq`, 有着更加直观的代码内容,而相比较于`CodeTemplate`则有着更加灵活的构建方式。