Sök…


Introduktion

Designmönster är formaliserade bästa metoder som programmeraren kan använda för att lösa vanliga problem vid utformning av en applikation eller ett system.

Designmönster kan påskynda utvecklingsprocessen genom att tillhandahålla testade, beprövade utvecklingsparadigmer.

Återanvända designmönster hjälper till att förhindra subtila problem som kan orsaka stora problem, och det förbättrar också kodläsbarheten för kodare och arkitekter som känner till mönstren.

Exempel på Singleton klass

Java Singleton-mönster

För att implementera Singleton-mönstret har vi olika tillvägagångssätt men alla har följande vanliga begrepp.

  • Privat konstruktör för att begränsa instansen för klassen från andra klasser.
  • Privat statisk variabel av samma klass som är den enda instansen av klassen.
  • Offentlig statisk metod som returnerar klassens instans, detta är den globala åtkomsten
  • poäng för den yttre världen för att få förekomsten av singleton-klassen.
/**
 * 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;
  }
}

Observera mönster

Observatörsmönstret är ett vanligt mönster som används i många sammanhang. Ett riktigt exempel kan tas från YouTube: När du gillar en kanal och vill få alla nyheter och titta på nya videor från den här kanalen, måste du prenumerera på den kanalen. När denna kanal publicerar nyheter kommer du (och alla andra abonnenter) att få ett meddelande.

En observatör kommer att ha två komponenter. Den ena är en programföretag (kanal) och den andra är en mottagare (du eller någon annan abonnent). Sändaren hanterar alla mottagarinstanser som prenumererade på den. När programföretaget avfyrar en ny händelse kommer den att meddela detta till alla mottagarinstanser. När mottagaren tar emot en händelse måste den reagera på den händelsen, till exempel genom att slå på YouTube och spela den nya videon.

Implementera observatörsmönstret

  1. Sändaren måste tillhandahålla metoder som gör det möjligt för mottagare att prenumerera och avsluta prenumerationen på den. När programföretaget avfyrar en händelse måste abonnenterna meddelas att en händelse har inträffat:

    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. Mottagaren måste implementera en metod som hanterar händelsen från programföretaget:

    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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow