Theo mọi người thì trong pattern Composite sẽ có thể có những issue gì? Đưa ra các vấn đề và cùng nhau giải quyết.
Ví dụ về Singleton pattern:
Triển khai của một Singleton có dạng:
public class Singleton {
private static Singleton singleton; // Khong khoi tao truc tiep vi class duoc trien khai co the rat nang
private Singleton() {
}
public Singloton getInstance() {
if(singleton == null) {
singleton = new Singleton();
}
return singleton;
}
}
Từ triển khai trên nhận thấy singleton bắt buộc phải là một thuộc tính static nên sẽ có thể gặp phải vấn đề về bất đồng bộ. Khi có hai thread cùng gọi đến phương thức getInstance dẫn đến cả hai cùng check thuộc tính singleton đều bằng null. Việc này dẫn đến singleton được khỏi tao hai lần gây mất tính toàn vẹn của dữ liệu.
Vậy với Composite chúng ta sẽ có nhưng issue gì kéo theo nó?