Khái niệm:
Đảm bảo một lớp chỉ có một đối tượng và cung cấp một điểm truy xuất đến nó.
Mức độ sử dụng: vừa.
UML Class Diagram:
Những lớp và/hoặc đối tượng trong mẫu thiết kế này:
- Singleton (LoadBalancer):
+ định nghĩa một Instance operation để cho các client truy xuất đến đối tượng duy nhất của nó.
+ chịu trách nhiệm trong việc tạo ra và bảo trì đối tượng duy nhất của nó.
Singleton: Khi nào sử dụng và sử dụng ở đâu
Hầu hết các đối tượng trong một ứng dụng đều chịu trách nhiệm cho
công việc của chúng và truy xuất dữ liệu tự lưu trữ (self-contained
data) và các tham chiếu trong phạm vi được đưa ra của chúng. Tuy nhiên,
có nhiều đối tượng có thêm những nhiệm vụ và có ảnh hưởng rộng hơn,
chẳng hạn như quản lý các nguồn tài nguyên bị giới hạn hoặc theo dõi
toàn bộ trạng thái của hệ thống.
Những nhiệm vụ của các đối tượng này thường yêu cầu chỉ có một đối
tượng của một lớp. Các ví dụ bao gồm các bảng CSDL được lưu trữ (cached
database records), hoặc một dịch vụ lập lịch thường xuyên gửi email các
workflow item. Có hơn một CSDL hoặc dịch vụ lập lịch sẽ gây nên sự trùng
lặp rủi ro.
Những phần khác trong ứng dụng phụ thuộc vào những đối tượng đặc biệt
này và cần có cách để tìm ra chúng. Đây là nơi mà mẫu thiết kế
Singleton được sử dụng. Động cơ của mẫu thiết kế Singleton là đảm bảo
một lớp chỉ có duy nhất một đối tượng và đưa ra một điểm truy xuất đến
đối tượng này. Với việc sử dụng mẫu thiết kế Singleton, bạn tập trung
quyền vào một nguồn tài nguyên riêng trong một đối tượng duy nhất.
Những lý do khác để sử dụng Singleton là để nâng cao hiệu suất. Một
trường hợp phổ biến là khi bạn có một đối tượng vô trạng thái được tạo
ra hết lần này đến lần khác. Một Singleton hủy sự cần thiế để tạo và hủy
các đối tượng liên tục. Hãy lưu ý mặc dù Singleton không phải là giải
pháp tốt nhất trong trường hợp này, một giải pháp thay thế là làm cho
các phương thức trở thành static và điều này cũng có cùng ảnh hưởng.
Với việc sử dụng Singleton, bạn có thể giữ một hoặc nhiều biến toàn
cục và điều này có thể thực sự linh hoạt. Thật vậy, đây là cách mà các
Singleton thường được sử dụng – chúng là nơi lý tưởng để giữ và bảo trì
cac biến có khả năng truy xuất toàn cục. Hãy xem ví dụ sau:
Demo:
0 comments:
Post a Comment