优雅的Builder模式
@Data
public class SearchColumn {
private List<Column> columns;
public SearchColumn(List<Column> columns) {
this.columns = columns;
}
public static SearchColumn.Builder builder() {
return new Builder();
}
public static class Builder {
private List<Column> columns;
private Builder() {
this.columns = new ArrayList<>();
}
public Builder addColumn(String name, String value) {
columns.add(new Column(name, value));
return this;
}
public SearchColumn build() {
if (columns.isEmpty()) {
throw ExceptionFactory.createException(ExceptionCode.PK_EMPTY_COLUMN);
} else {
return new SearchColumn(columns);
}
}
}
public static void main(String[] args) {
SearchColumn.builder()
.addColumn("ibsn", "12345")
.addColumn("author", "Jon")
.build();
}
}