Chào các bạn,
Mình đang tìm hiểu vể Design Patterm đến phần Singleton Patterm và có một thắc mắc sau đây:
Mình có 2 đoạn code mô tả 2 class Singleton khác nhau.
Code 1
public class Singleton {
String resourceObject;
private static Singleton instanceSingleton;
private Singleton() {
resourceObject = "";
}
public String getResourceObject() {
return resourceObject;
}
public void setResourceObject(String value) {
this.resourceObject = value;
}
public static Singleton getInstance() {
if (instanceSingleton == null) {
instanceSingleton = new Singleton();
}
return instanceSingleton;
}
}
Code 2
public class NewSingleton {
public NewSingleton() {
}
static String resourceObject;
static {
resourceObject = "";
}
public static String getResourceObjetc() {
return resourceObject;
}
public static void setRerourceObject(String value) {
resourceObject = value;
}
}
Vấn đề:
Code 1 viết theo đúng cấu trúc template của một singleton class mà mình đọc trong nhiều sách, bao gồm 1 method public getInstance để trả về đối tượng duy nhất. Kèm theo là các method để tương tác với Instance đó: như get,set value.
Code 2 là loại mình thường dùng để viết một lớp có khả năng chia sẽ dữ liệu chung cho nhiều đối tượng và không thể được khởi tạo để ra được 2 instances.
Câu hỏi:
Code 2 có áp dụng theo Singleton Patterm hay không ? Vì mình thấy chức năng của cả 2 lớp tương tự nhau.
Nếu câu trả lời là không, vậy thì hạn chế/ khuyết điểm của Code 2 là gì so với cách áp dụng nguyên mẫu khai báo Singleton sách vở ?