Mẫu này được khuyến khích sử dụng khi một lớp có số lượng lớn các tham số cùng loại và khó nhớ thứ tự cũng như mục đích của chúng.
public class Good{
public final int a;
public final int b;
public final int c;
public final int d;
public final int e;
public final int f;
//Реализация Builder через статический внутренний класс
public static class Builder{
//Обязательные параметры
public int a;
public int b;
//Необязательные параметры со значениями по умолчанию
public int c = 0;
public int d = 0;
public int e = 0;
public int f = 0;
//Конструктор с обязательными параметрами
public Builder(int a, int b){
this.a=a;
this.b=b;
}
//Методы с возвращающим типом Builder для необязательного параметра с, d, e, f,
public Builder c (int val) {
c = val;
return this;
}
public Builder d (int val) {
d = val;
return this;
}
public Builder e (int val) {
e = val;
return this;
}
public Builder f (int val) {
f = val;
return this;
}
//Метод с возвращающим типом Good для генерации an object
public Good buidl() {
return new Good (this); }
private Good(Builder builder) {
a = builder.a;
b = builder.b;
c = builder.c;
d = builder.d;
e = builder.e;
f = builder.f; }
Bây giờ trong phương thức, main
khi tạo một đối tượng, hàm tạo của lớp tĩnh Builder
với các tham số bắt buộc sẽ được gọi. Sau đó tất cả các tham số tùy chọn cần thiết sẽ được gọi thông qua dấu chấm. Cuối cùng, một phương thức được gọi buidl();
để tạo đối tượng.
Good good = new Good.Builder(40, 20)
.c(2)
.d(4)
.e(23)
.f(9)
.buidl();
Nếu tôi muốn tạo một đối tượng có hai tham số bắt buộc và một tham số tùy chọn, nó sẽ trông như thế này:
Good good = new Good.Builder(40, 20)
.c(2)
.buidl();
Nếu tôi muốn tạo một đối tượng chỉ có hai tham số bắt buộc, nó sẽ trông như thế này:
Good good = new Good.Builder(40, 20)
.buidl();
GO TO FULL VERSION