Design Patterns: Singleton
Bài đăng này đã không được cập nhật trong 5 năm
Lời mở đầu
Có khá nhiều mẫu design pattern, mỗi loại cung cấp 1 giải pháp để giải quyết 1 bài toán nào đó.
Trong bài viết này, mình xin phép được giới thiệu về Singleton Pattern và khi nào nên áp dụng nó.
Basic idea
Trong phần mềm, Singleton Pattern là mẫu thiết kế dùng để giới hạn việc khởi tạo 1 đối tượng.
Singleton Pattern nên được sử dụng khi:
- Phải có 1 single class và class này có thể được truy cập từ access point được biết đến.
- Singleton class có thể được mở rộng bằng cách kế thừa, client phải có thể sử dụng các lớp mở rộng mà không thực hiện bất kỳ thay đổi nào đối với nó.
Singleton Pattern có nhiều lợi thế, có thể được tóm tắt dưới đây:
- Có một kiểm soát chặt chẽ về cách thức và thời điểm khách hàng truy cập vào cá thể singleton. Vì vậy, bạn có quyền truy cập được kiểm soát vì lớp singleton đóng gói thể hiện của nó.
- Khi bạn cần hạn chế số lượng instance mà chúng ta tạo từ một lớp để lưu tài nguyên hệ thống.
Bây giờ tôi sẽ chỉ cho bạn cách bạn có thể triển khai bằng JavaScript. Tôi đã tạo ra một vấn đề trong đó có một lớp có tên là DatabaseConnection xác định hai thuộc tính: configure và getUniqueIdentificator. Lớp này là kết nối đến cơ sở dữ liệu của chúng tôi. DatabaseConnection được sử dụng bởi một số client (client 1, client2).
Đoạn code được mô tả dưới đây:
Mỗi máy khách tạo một kết nối mới đến cơ sở dữ liệu và yêu cầu định danh duy nhất của từng kết nối. Một trong những hậu quả chính của kiến trúc này là nhiều tài nguyên đang được sử dụng hơn mức cần thiết.
Kết qủa ta nhận được như sau:
Solution
Giải pháp là sử dụng một singleton chỉ tạo một thể hiện của lớp
Điểm truy cập duy nhất đến cá thể là sử dụng phương thức tĩnh getDatabaseConnection, phương thức này sẽ tạo một cá thể mới trong trường hợp cá thể đó không tồn tại hoặc sẽ get nó ra.
Và kết quả mà ta nhận được là:
Summary
Qua phần trình bày của mình, hy vọng mọi người sẽ hiểu tổng quát về singleton pattern. Cảm ơn mọi người đã đọc.
Link tham khảo: https://medium.com/swlh/design-patterns-singleton-batman-and-spiderman-here-741211acdfaa
All rights reserved