[Design pattern]Thảo luận về Composite pattern
###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ó?
cái này sẽ hạn chế đc vấn đề của singleton
Tại sao không
syschonized(singleton)
mà lạisyschonized(lock)
… Với cả là Singleton chỉ là ví dụ thôi. Mình đang muốn gợi mở về Composite.Bác có thể khái quát Composite pattern là gì được không . Nhiều người không biết đâu
Mình đã đọc 1 bài phân tích chi tiết các case khi sử dụng Singleton. Mình sẽ tìm lại link đó cho bạn, trong bài viết của họ có tính đến nhiều trường hợp. Nói chúng các pattern là kinh nghiệp của những lập trình viên có kinh nghiệm rồi nên theo mình thì hiếm mà có các issue lắm.
Pattern được sinh ra là để giải quyết các common issue nên mục tiêu ở đây là tìm hiểu về các issue để hiểu sâu thêm về các pattern ấy.
thêm cái hình để dễ hình dung về composite