Singleton giới hạn class chỉ có một instance duy nhất. Cài đặt: constructor private, static instance holder, getInstance() trả về cùng instance đó.
Lợi ích: quản lý global state, tiết kiệm tài nguyên (database connection, logger).
Nhược điểm: khó test (global state), có thể gây threading issue nếu không cẩn thận. Thread-safe versions: eager initialization, lazy với synchronized, double-checked locking, hoặc Bill Pugh initialization (dùng nested static class — khuyến nghị nhất).