W pytaniu What is an efficient way to implement a singleton pattern in Java? odpowiedź z najbardziej upvotes mówi, aby użyć Enum do implementacji singleton.Radzenie sobie z Singletonami, które mają do podklasy
To dobrze, rozumiem argumenty i zalety językowe.
Mam jednak zestaw klas, które definiuję singleton, ale które muszą rozszerzyć inne klasy, nie jest to możliwe z podejściem enum, , ponieważ wyliczenia nie mogą podklasy.
Joshua Bloch mówi w swoich slajdów:
- Ale jedno brakuje-nie można przedłużyć typ enum
- W większości przypadków nie powinno
- One przekonujące kody przypadków użycia
W większości przypadków nie powinieneś: Czy ktoś może opracować na ten temat? Zaimplementowałem kilka serwletów i rozciągają się one na HttpServlet
, dlaczego nie powinny być one singletonami? Chcę tylko jeden egzemplarz ich w mojej aplikacji.
Proszę wyjaśnić, dlaczego chcesz serwletu singleton (jakie są ograniczenia, które doprowadziły do tego wyboru)? – Romski
@Romski Aplikacja wymaga tylko jednej instancji tego serwletu. – Mahoni
enum może implementować interfejsy. Z delegacją oznacza to, że masz tylko jedną instancję, która używa funkcjonalności zdefiniowanej w innej klasie. –