Skip to content

Instantly share code, notes, and snippets.

@tanhit243
Created May 21, 2023 15:54
Show Gist options
  • Save tanhit243/a34ea2bafc78faac8a23d9bfd54b3348 to your computer and use it in GitHub Desktop.
Save tanhit243/a34ea2bafc78faac8a23d9bfd54b3348 to your computer and use it in GitHub Desktop.
:info_neon: Chuyên mục MIL - Monday I learn - 013
Nhân tiện mượn được a Vượng cuốn sách Làm chủ các mẫu thiết kế kinh điển trong lập trình của tác giả Tạ Văn Dũng thì em cũng mang tới chương trình làm chủ các mẫu thiết kế trong 1 ngày. (Just for funs)
Singleton pattern - pattern thuộc vào nhóm khởi tạo.
Nó được nghĩ ra để giúp đảm bảo một class chỉ có một object instance duy nhất và là nơi truy cập duy nhất trong hệ thống.
Ví dụ thực tế:
Trong ứng dụng Rails có nhiều loại connection DB, Redis, ... thì chúng ta không thể cứ mỗi lần dùng lại khởi tạo một object DB, Redis để dùng. Việc này sẽ tốn tài nguyên và hiệu suất không cao. Do đó chúng ta có thể nghĩ ngay tới Singleton pattern để giải quyết vấn đề này.
Có một số lưu ý khi sử dụng Singleton: Race condition - nói nom na là việc ứng dụng chạy nhiều thread đồng thời và cùng truy cập tới tài nguyên chung. Nếu implement pattern không tốt thì 1 class có thể có nhiều hơn 1 object.
Việc implement pattern, ưu điểm, nhược điểm ... về lý thuyết nói chung và Ruby nói riêng mn có thể tham khảo tại https://refactoring.guru/design-patterns/singleton/ruby/example#example-1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment