Builder Pattern trong Java

0 0 0

Người đăng: Ông Huy Thắng

Theo Viblo Asia

Design Pattern Builder là một mẫu thiết kế thuộc nhóm Creational Patterns trong Java, dùng để tạo đối tượng phức tạp từng bước một. Nó rất hữu ích khi một object có nhiều tham số (đặc biệt là khi một số tham số là tùy chọn), giúp code dễ đọc, dễ bảo trì, và tránh việc phải dùng quá nhiều constructor hoặc setter.

Tổng quan về Builder Pattern

Khi một class có quá nhiều constructor (overloading) hoặc nhiều trường cần set, việc khởi tạo sẽ khó đọc và dễ gây lỗi.

Cách thông thường:

User user = new User("John", "Doe", 30, "USA", "Engineer");

=> Khó đọc, và bạn phải nhớ đúng thứ tự các tham số.

Cách sử dụng Builder:

User user = User.builder() .firstName("John") .lastName("Doe") .age(30) .country("USA") .occupation("Engineer") .build();

Cách triển khai Builder Pattern bằng tay

public class User { private String firstName; private String lastName; private int age; private String country; public static class Builder { private String firstName; private String lastName; private int age; private String country; public Builder firstName(String firstName) { this.firstName = firstName; return this; } public Builder lastName(String lastName) { this.lastName = lastName; return this; } public Builder age(int age) { this.age = age; return this; } public Builder country(String country) { this.country = country; return this; } public User build() { return new User(this); } } private User(Builder builder) { this.firstName = builder.firstName; this.lastName = builder.lastName; this.age = builder.age; this.country = builder.country; }
}

Hỗ trợ từ Lombok (Khuyên dùng với Spring Boot)

Spring Boot projects thường dùng Lombok để giảm boilerplate (mâu thuẫn - mã lặp đi lặp lại không thay đổi nhiều) code:

Cài Lombok (pom.xml)

<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>new version (lên google nhé)</version> <scope>provided</scope>
</dependency>

Sử dụng Lombok

import lombok.Builder;
import lombok.Data; @Data
@Builder
public class User { private String firstName; private String lastName; private int age; private String country;
}

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tổng hợp các bài hướng dẫn về Design Pattern - 23 mẫu cơ bản của GoF

Link bài viết gốc: https://gpcoder.com/4164-gioi-thieu-design-patterns/. Design Patterns là gì. Design Patterns không phải là ngôn ngữ cụ thể nào cả.

0 0 313

- vừa được xem lúc

Giới thiệu về Builder Design Pattern

Nguồn: refactoring.guru. Builder. Ý đồ.

0 0 47

- vừa được xem lúc

Một ví dụ nhỏ về Factory method

Trong bài viết trước mình đã giới thiệu tới các bạn về Abstract Factory pattern, các bạn quan tâm có thể theo dõi lại tại đây. Để tiếp tục về chủ đề design pattern trong bài viết này mình sẽ trình bày những khái niệm, ưu nhược điểm và các sử dụng của một creational design pattern khác đó là Factory

0 0 41

- vừa được xem lúc

Tôi đã dùng Service Pattern trong NuxtJS như thế nào ?

Giới thiệu. Trong quá trình làm VueJS NuxtJS hay thậm chí là Laravel mình cũng hay áp dụng các pattern như Service hoặc Repository.

0 0 75

- vừa được xem lúc

Hướng dẫn Adapter Design Pattern

Trong bài viết này, chúng ta sẽ cùng tìm hiểu về Adapter Design Pattern qua cấu trúc, cánh triển khai, ví dụ, ưu điểm nhược điểm và ứng dụng của nó. Đây là bài viết đầu tiên của mình nên sẽ không trán

1 1 71

- vừa được xem lúc

Giới thiệu về Prototype Design Pattern

Ý đồ. Prototype là một creational design pattern cho phép bạn sao chép các object hiện có mà không làm cho code của bạn phụ thuộc vào các class của chúng.

0 0 55