Singleton

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:

singleton_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:

singleton_1

singleton_2

Demo:

SingletonRealWordClassDiagram

http://cid-d0e5ddf023bf4324.office.live.com/embedicon.aspx/.Public/Design%20Pattern/SingletonRealWorld.zip

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s