FreeBuilderJava 的 Builder 模式生成器
FreeBuilder
為 Java 1.6+ 自動生成 Builder 模式。
當(dāng)設(shè)計類的構(gòu)造函數(shù)或靜態(tài)工廠具有多個參數(shù)時,Builder 模式是一個不錯的選擇?!?nbsp;Effective Java,第二版,第39頁
背景
在 Java 中實現(xiàn) Builder 模式容易出錯和重復(fù)。即使是一個簡單的四字段類,最基本的構(gòu)建器 API 需要 39 行代碼,如果你不使用像 AutoValue 這樣的實用程序來生成值樣板,則需要 72 行代碼。
使用
import org.inferred.freebuilder.FreeBuilder;
@FreeBuilder
public interface Person {
/** Returns the person's full (English) name. */
String name();
/** Returns the person's age in years, rounded down. */
int age();
/** Builder of {@link Person} instances. */
class Builder extends Person_Builder { }
}
JavaBean convention
如果值類型遵循 JavaBean 命名約定,只需在訪問器方法前面加上'get'(或者,布爾訪問器是'is')。 FreeBuilder 會跟隨,并在 setter 方法上添加“set”前綴,以及從 toString 輸出中刪除前綴。
@FreeBuilder
public interface Person {
/** Returns the person's full (English) name. */
String getName();
/** Returns the person's age in years, rounded down. */
int getAge();
/** Builder of {@link Person} instances. */
class Builder extends Person_Builder { }
}
Person person = new Person.Builder()
.setName("Phil")
.setAge(31)
.build();
System.out.println(person); // Person{name=Phil, age=31}評論
圖片
表情
