Trong câu hỏi What is an efficient way to implement a singleton pattern in Java? câu trả lời với nhiều người trả lời nhất nói, để sử dụng một Enum để thực hiện một singleton.Đối phó với các Singletons phải phân lớp
Điều đó là tốt và tôi hiểu các đối số, tương ứng với lợi thế ngôn ngữ.
Tôi có, tuy nhiên, một tập hợp các lớp mà tôi định nghĩa singleton nhưng cần phải mở rộng các lớp khác, điều này là không thể với phương pháp enum, vì enums không thể phân lớp.
Joshua Bloch nói trong slide của mình:
- Nhưng có một điều là mất tích-bạn không thể mở rộng một kiểu enum
- Trong hầu hết các trường hợp, bạn không nên
- Một trường hợp sử dụng hấp dẫn — mã hoạt động
Trong hầu hết các trường hợp, bạn không nên: ai đó có thể xây dựng trên đó? Tôi đã thực hiện một số servlets và họ mở rộng HttpServlet
, tại sao không nên là những người độc thân? Tôi chỉ muốn một ví dụ của họ trong đơn của tôi.
Bạn có thể giải thích tại sao bạn muốn một servlet đơn (các ràng buộc dẫn đến lựa chọn này) là gì? – Romski
@Romski Ứng dụng này chỉ cần một cá thể của servlet này. – Mahoni
enum có thể thực hiện các giao diện. Với việc ủy quyền này có nghĩa là bạn chỉ có một cá thể sử dụng chức năng được định nghĩa trong một lớp khác. –