Ricerca…


introduzione

I modelli di progettazione sono le migliori pratiche formalizzate che il programmatore può utilizzare per risolvere problemi comuni durante la progettazione di un'applicazione o di un sistema.

I modelli di progettazione possono accelerare il processo di sviluppo fornendo paradigmi di sviluppo collaudati e comprovati.

Riutilizzare i modelli di progettazione aiuta a prevenire problemi sottili che possono causare problemi importanti e migliora anche la leggibilità del codice per i programmatori e gli architetti che hanno familiarità con i modelli.

Esempio di classe Singleton

Java Singleton Pattern

Per implementare il modello Singleton, abbiamo approcci diversi ma tutti seguono concetti comuni.

  • Costruttore privato per limitare l'istanza della classe da altre classi.
  • Variabile statica privata della stessa classe che è l'unica istanza della classe.
  • Metodo statico pubblico che restituisce l'istanza della classe, questo è l'accesso globale
  • punta al mondo esterno per ottenere l'istanza della 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;
  }
}

Modello di osservatore

Il modello di osservatore è un modello comune, ampiamente utilizzato in molti contesti. Un vero esempio può essere preso da YouTube: quando ti piace un canale e vuoi ricevere tutte le notizie e guardare nuovi video da questo canale, devi iscriverti a quel canale. Quindi, ogni volta che questo canale pubblica notizie, tu (e tutti gli altri abbonati) riceverai una notifica.

Un osservatore avrà due componenti. Uno è un broadcaster (canale) e l'altro è un ricevitore (tu o qualsiasi altro utente). L'emittente gestirà tutte le istanze del destinatario che l'hanno sottoscritta. Quando l'emittente emette un nuovo evento, lo annuncerà a tutte le istanze del destinatario. Quando il destinatario riceve un evento, dovrà reagire a quell'evento, ad esempio attivando YouTube e riproducendo il nuovo video.

Implementare il modello di osservatore

  1. L'emittente deve fornire metodi che consentano ai destinatari di iscriversi e cancellarsi da esso. Quando l'emittente emette un evento, gli abbonati devono essere avvisati che si è verificato un evento:

    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. Il destinatario deve implementare un metodo che gestisca l'evento dall'emittente:

    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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow