Trang chủ > Uncategorized > Singleton

Singleton

Theo quyển Design Patterns (Gang of Four) thì Singleton là pattern cho phép class chỉ có duy nhất một instance. Đây cũng là một trong những pattern dễ hiểu, dễ hiện thực nhất. Khi nhắc đến Singleton thì mọi người cũng ngầm hiểu là Singleton với hiện thực như trong Gang of Four.

Tuy nhiên theo ý kiến chung là không nên dùng Singleton vì:

  • Khó thay đổi, mở rộng. Singleton dùng method static. Class con có thể hide method static, nhưng không thể override chúng.
  • Vi phạm nguyên tắc Explicit interface với các module dùng cùng một Singleton (tuy nhiên, đây không phải là luật).
  • Gây trở ngại cho unit test. Đây là hệ quả của lí do đầu tiên (xem nhanh).

Khi nào thì dùng Singleton? Bài viết này đề xuất:

  • Nếu tính chất “Singleton” không phải là bản chất của class, mà là do class dùng nó yêu cầu thế, thì tính duy nhất nên được hiện thực theo một cách độc lập, như Factory Method hay Dependency Injection.
  • Nếu tính chất “Singleton” là bản chất của class, xem xét việc dùng biến static để lưu trạng thái của instance (vẫn đem lại tính “duy nhất”), trước khi dùng đến phương pháp trong Gang of Four (vốn dùng cả method static).

Xem thêm Use your singletons wisely.

  1. Chưa có phản hồi.
  1. No trackbacks yet.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: