Skip to content

Commit b5b0a76

Browse files
committed
leodpen<update> update README.
1 parent aa6969a commit b5b0a76

File tree

3 files changed

+41
-7
lines changed

3 files changed

+41
-7
lines changed

README.md

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,20 @@
55
[![Version](https://img.shields.io/badge/version-1.0.2-orange)](https://github.com/LEODPEN/BetterBuilder/releases)
66
---
77
BetterBuilder is a [Java annotation processor](https://docs.oracle.com/javase/8/docs/api/javax/annotation/processing/Processor.html) used for
8-
automatically generating better builder codes([builder design pattern](https://en.wikipedia.org/wiki/Builder_pattern#Java)) with fluent get/set methods,
8+
automatically generating **better** builder codes([builder design pattern](https://en.wikipedia.org/wiki/Builder_pattern#Java)),
99
which can make coding much more comfortable.
1010

11+
### Why better ?
12+
13+
+ [fluent get/set method](#fluentSet-switch)
14+
+ [configurable get/set](#field-ignore).
15+
+ [2 set type provided](#set-type)
16+
+ 3 builder patterns provided:
17+
+ [no builder](#nobuilder-switch)
18+
+ classic
19+
+ [**type safe**](#type-safe-builder)
20+
21+
1122
## Getting BetterBuilder
1223

1324
> BetterBuilder doesn't add any runtime dependencies to your code.
@@ -119,9 +130,9 @@ public class Student {
119130

120131
### NoBuilder switch
121132

122-
Once make {noBuilder = true}, BetterBuilder will not generate builder methods (nor the allArgsConstructor).
133+
Once make {BUILDER_TYPE = BuilderType.NO_BUILDER}, BetterBuilder will not generate builder methods (nor the allArgsConstructor).
123134
```java
124-
@BetterBuilder(noBuilder = true)
135+
@BetterBuilder(BUILDER_TYPE = BuilderType.NO_BUILDER)
125136
public class Student {
126137
...
127138
}
@@ -147,6 +158,27 @@ public class Student {
147158
It is for those **fields that aren't allowed to be changed or accessed after
148159
initialization**.
149160

161+
### Type-Safe Builder
162+
163+
When we use builder pattern to generate our object, some fields are supposed to be
164+
initialized. But the classic pattern does not guarantee this.
165+
166+
BetterBuilder provides a type-safe builder pattern. Once the fields annotated with
167+
@Required haven't been initialized, the goal object will not be generated[instead, an IllegalArgumentException will be thrown].
168+
169+
```java
170+
@BetterBuilder(BUILDER_TYPE = BuilderType.TYPE_SAFE, fluentSet = false, fluentGet = true)
171+
public class TypeSafe {
172+
@BetterBuilder.Required
173+
private Integer ID;
174+
@BetterBuilder.Required
175+
private String name;
176+
private Boolean PID;
177+
private Long PID79211;
178+
}
179+
```
180+
you can also see the detail files :
181+
[type-safe](https://github.com/LEODPEN/BetterBuilder/blob/main/testModule/src/main/java/TypeSafe.java) and [type-safe-test](https://github.com/LEODPEN/BetterBuilder/blob/main/testModule/src/test/java/TypeSafeTest.java).
150182

151183
## Todo list
152184

@@ -158,7 +190,7 @@ initialization**.
158190
- [x] fluent - get / test
159191
- [x] ignore get
160192
- [x] compatible with lombok
161-
- [ ] type-safe builder / @Required for certain fields
193+
- [x] type-safe builder
162194

163195
...
164196

processor/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111
<name>BetterBuilder</name>
12-
<description>A Java annotation processor used for automatically generating better builder codes with fluent get/set methods.</description>
12+
<description>A Java annotation processor used for automatically generating better builder codes.</description>
1313
<url>https://github.com/LEODPEN/BetterBuilder</url>
1414
<packaging>jar</packaging>
1515
<artifactId>BetterBuilder</artifactId>
16-
<version>1.0.8-SNAPSHOT</version>
16+
<version>1.0.8</version>
1717

1818
<licenses>
1919
<license>

processor/src/main/java/cn/mpy634/enums/BuilderType.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
/**
44
* @author LEO D PEN
55
* @date 2021/2/14
6-
* @desc
6+
* @desc type enums for @BetterBuilder
7+
* @since 1.0.3
8+
* @see https://github.com/LEODPEN/BetterBuilder/blob/main/README.md
79
*/
810
public enum BuilderType {
911

0 commit comments

Comments
 (0)