Android Motif d'observateur


Exemple

Le modèle d'observateur est un modèle courant, largement utilisé dans de nombreux contextes. Un exemple concret peut être tiré de YouTube: lorsque vous aimez une chaîne et que vous souhaitez obtenir toutes les nouvelles et regarder les nouvelles vidéos de cette chaîne, vous devez vous abonner à cette chaîne. Ensuite, chaque fois que cette chaîne publie des informations, vous (et tous les autres abonnés) recevrez une notification.

Un observateur aura deux composants. L'un est un diffuseur (canal) et l'autre est un récepteur (vous ou tout autre abonné). Le radiodiffuseur traitera toutes les instances de récepteur qui y ont souscrit. Lorsque le diffuseur déclenche un nouvel événement, il l'annonce à toutes les instances du récepteur. Lorsque le récepteur reçoit un événement, il doit réagir à cet événement, par exemple en allumant YouTube et en lisant la nouvelle vidéo.

Implémenter le motif de l'observateur

  1. Le radiodiffuseur doit fournir des méthodes permettant aux destinataires de s’abonner et de se désabonner. Lorsque le radiodiffuseur déclenche un événement, les abonnés doivent être avertis qu'un événement s'est produit:

    class Channel{
        private List<Subscriber> subscribers;
        public void subscribe(Subscriber sub) {
            // Add new subscriber.
        }
        public void unsubscribe(Subscriber sub) {
            // Remove subscriber.
        }
        public void newEvent() {
            // Notification event for all subscribers.
        }
    }
    
  2. Le récepteur doit implémenter une méthode qui gère l'événement depuis le diffuseur:

    interface Subscriber {
        void doSubscribe(Channel channel);
        void doUnsubscribe(Channel channel);
        void handleEvent();  // Process the new event.
    }