Ngày 1: Design Pattern – Singleton.
Singleton Design Pattern là một trong những Design Pattern thuộc nhóm Creational Design Pattern. Singleton Pattern đảm bảo rằng một class chỉ có một instance và cung cấp một global point of access tới instance đó.
Ví dụ về Singleton trong Java:
“`java
public class Singleton {
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}
“`
Trong ví dụ trên, chúng ta tạo ra một instance duy nhất của class Singleton bằng cách sử dụng method getInstance(). Nếu instance này không tồn tại, chúng ta tạo nó, nếu nó đã tồn tại thì chúng ta sẽ không tạo mới nữa.
Trường hợp đặc biệt: Singleton không an toàn trong môi trường multi-threading. Nếu có 2 thread cố gắng khởi tạo Singleton cùng một lúc, chúng có thể tạo ra 2 instance khác nhau. Để giải quyết vấn đề này, chúng ta có thể sử dụng double checked locking principle.
Câu hỏi về phỏng vấn:
1) Định nghĩa singleton pattern?
– Singleton Pattern đảm bảo rằng một class chỉ có một instance và cung cấp một global point để truy cập instance đó.
2) Liệt kê các ưu điểm và nhược điểm của Singleton Design Pattern?
– Ưu điểm: Tiết kiệm bộ nhớ, vì object chỉ được tạo một lần.
– Nhược điểm: Vi phạm Single Responsibility Principle, class đã quản lý chính nó vì vậy nó nên chỉ chịu trách nhiệm về một hành vi duy nhất.
3) Singleton Pattern là thread-safe hay không?
– Không, trừ khi đồng bộ hóa được sử dụng.
4) Làm thế nào để Singleton Pattern trở nên thread-safe?
– Bằng cách sử dụng double checked locking principle.
5) Cho ví dụ về việc sử dụng Singleton Pattern trong thực tế?
– DriverManager là một ví dụ về việc sử dụng Singleton. Nó cung cấp một cách để liên kết với database và chúng ta chỉ cần một connection, không cần phải tạo nhiều.