Recherche…


Introduction

Les modèles de conception sont des meilleures pratiques formalisées que le programmeur peut utiliser pour résoudre des problèmes courants lors de la conception d'une application ou d'un système.

Les modèles de conception peuvent accélérer le processus de développement en fournissant des paradigmes de développement éprouvés et éprouvés.

La réutilisation de modèles de conception évite les problèmes subtils pouvant causer des problèmes majeurs et améliore la lisibilité du code pour les codeurs et les architectes familiarisés avec les modèles.

Exemple de classe Singleton

Motif Singleton Java

Pour implémenter le modèle Singleton, nous avons différentes approches, mais toutes ont des concepts communs suivants.

  • Constructeur privé pour restreindre l'instanciation de la classe à partir d'autres classes.
  • Variable statique privée de la même classe qui est la seule instance de la classe.
  • Méthode statique publique qui retourne l'instance de la classe, c'est l'accès global
  • point pour le monde extérieur pour obtenir l'instance de la classe singleton.
/**
 * Singleton class.
 */
public final class Singleton {

  /**
   * Private constructor so nobody can instantiate the class.
   */
  private Singleton() {}

  /**
   * Static to class instance of the class.
   */
  private static final Singleton INSTANCE = new Singleton();

  /**
   * To be called by user to obtain instance of the class.
   *
   * @return instance of the singleton.
   */
  public static Singleton getInstance() {
    return INSTANCE;
  }
}

Motif d'observateur

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.
    }
    


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow