Posted in

Ngày 1: Singletons trong Java.

Ngày 1: Singletons trong Java.
Singleton là một design pattern thuộc nhóm Creational Design Pattern. Singleton giúp đảm bảo rằng một lớp chỉ có một thể hiện và cung cấp một điểm truy cập toàn cục đến nó.

Ví dụ phổ biến nhất về singleton trong Java là Runtime.getRuntime().

Cách tạo một singleton class:
“`java
public class Singleton {
private static Singleton singletonInstance;

private Singleton() {
// Private constructor prevents instantiation from other classes
}

public static synchronized Singleton getInstance() {
if (singletonInstance == null) {
singletonInstance = new Singleton();
}
return singletonInstance;
}
}
“`
Trong ví dụ này, chúng ta tạo constructor là private để ngăn chặn truy cập từ bên ngoài và sử dụng getInstance() method để truy cập lớp.

Các trường hợp đặc biệt:
– Với Multi-thread environment, chúng ta cần đảm bảo rằng chỉ có một luồng có thể tạo instance. Điều này có thể đạt được bằng cách sử dụng keyword synchronized.

5 Câu hỏi và câu trả lời ôn tập:
1. Singleton pattern là gì?
Trả lời: Singleton pattern là một design pattern thuộc nhóm Creational design, giúp đảm bảo rằng một class chỉ có một instance và cung cấp một điểm truy cập toàn cầu đến nó.

2. Khi nào bạn nên sử dụng Singleton patterns?
Trả lời: Khi bạn muốn hạn chế số lượng của một thể hiện hoặc sử dụng tiết kiệm tài nguyên khi tạo object.

3. Cách tạo một Singleton class trong Java?
Trả lời: Đầu tiên, tạo một constructor private để ngăn chặn truy cập từ bên ngoài. Tiếp theo sử dụng một thể hiện static và truy cập nó thông qua một method public.

4. Làm thế nào để đảm bảo rằng Singleton của bạn an toàn trong môi trường đa luồng?
Trả lời: Để đảm bảo singleton pattern an toàn trong môi trường đa luồng, chúng ta có thể sử dụng từ khóa synchronized.

5. Cách thức hoạt động của Singleton class?
Trả lời: Trc Constructor được khai báo là private, không thể tạo đối tượng bằng cách sử dụng new keyword ngoài class. Vì vậy, chúng ta sử dụng phương thức public static để tạo đối tượng của class.

Leave a Reply

Your email address will not be published. Required fields are marked *