Định nghĩa:
Builder Pattern
phân tách một đối tượng phức tạp thành các thành phần đơn giản, sau đó tạo chúng 1 cách riêng biệt theo các nhu cầu khác nhau. Và sau cùng là xây dựng lại 1 đối tượng phức tạp
Để dễ hiểu hơn chúng ta lấy 1 ví dụ:
class User {
constructor(
public username: string,
public sex: string,
public age: number,
public photo: string,
public email: string
) {}
}
Chúng ta có 1 Class User và chúng ta khởi tạo 1 đối tượng User với từ khoá New
const user = new User('john','male',18,'photo','john@gmail.com')
Bằng cách này chúng ta vẫn có thể tạo ra 1 đối tượng user nhưng trong quá trình tạo chúng ta cần chú ý đến thứ tự các tham số được truyền vào, cần truyền đủ các tham số và đúng kiểu dữ liệu của chúng.
Để giải quyết vấn đề trên thì ta có Builder Pattern.
class UserBuilder {
public username!: string;
public sex!: string;
public age!: number;
public photo!: string;
public email!: string;
setUserName(name: string) {
this.username = name;
return this;
}
setSex(sex: string) {
this.sex = sex;
return this;
}
setAge(age: number) {
this.age = age;
return this;
}
setPhoto(photo: string) {
this.photo = photo;
return this;
}
setEmail(email: string) {
this.email = email;
return this;
}
build() {
return new User(this.username, this.sex, this.age, this.photo, this.email);
}
}
Với cách này chúng ta có thể xây dựng lại 1 đối tượng phức tập theo ý muốn của chúng ta.
const bytefer = new UserBuilder()
.setAge(30)
.setSex("male")
.setEmail("bytefer@gmail.com")
.setPhoto("https://***.com/**")
.setUserName("Bytefer")
.build();
Kết quả:
User: {
"username": "Bytefer",
"sex": "male",
"age": 30,
"photo": "https://***.com/**",
"email": "bytefer@gmail.com"
}
Nếu ai dùng Nestjs rồi thì thấy cái này quen quen đúng không.
Top comments (0)