Bonjour à tous,
Je suis en train de m'intéresser au code d'un bot Discord (un chat) et je suis tombé sur la classe suivante:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class MessageHandler { private static final LinkedBlockingQueue<MessageAction> queue = new LinkedBlockingQueue<>(); private static MessageHandler ourInstance = new MessageHandler(); public static MessageHandler getInstance() { return ourInstance; } private MessageHandler() { } public static LinkedBlockingQueue<MessageAction> getQueue() { return queue; } public void addCreateToQueue(String _id, MessageCreateAction.Type _type, Message _message, StreamEntity... _stream){ [...] synchronized (queue){ queue.add(messageItem); queue.notify(); } } } |
Ensuite, dans d'autres classes, les méthodes de MessageHandler sont appelées de façon différentes. Lorsque getQueue() est appelée, le code ressemble à MessageHandler.getQueue(). Par contre, si on appelle la méthode addCreateToQueue(…), le code ressemble à MessageHandler.getInstance().addCreateToQueue(…).
Voici ma question : à quoi sert l'appel à getInstance() ? Selon moi, étant donné qu'on a un synchronize sur l'objet queue, on pourrait rendre la méthode addCreateToQueue(…) statique et l'appeler de la même façon que getQueue() et ainsi se débarrasser de l'instance interne.
Est-ce correct ? Ou passé-je à côté de quelque de crucial ?
Merci d'avance pour vos réponses !
Miguel