Zoeken…


Invoering

Ontwerppatronen zijn geformaliseerde best practices die de programmeur kan gebruiken om veelvoorkomende problemen bij het ontwerpen van een applicatie of systeem op te lossen.

Ontwerppatronen kunnen het ontwikkelingsproces versnellen door geteste, bewezen ontwikkelingsparadigma's te bieden.

Het opnieuw gebruiken van ontwerppatronen helpt subtiele problemen te voorkomen die grote problemen kunnen veroorzaken, en het verbetert ook de leesbaarheid van code voor codeerders en architecten die bekend zijn met de patronen.

Voorbeeld van de Singleton-klasse

Java Singleton-patroon

Om het Singleton-patroon te implementeren, hebben we verschillende benaderingen, maar ze hebben allemaal dezelfde concepten.

  • Prive-constructeur om instantiatie van de klasse uit andere klassen te beperken.
  • Statische privévariabele van dezelfde klasse die de enige instantie van de klasse is.
  • Openbare statische methode die het exemplaar van de klasse retourneert, dit is de algemene toegang
  • punt voor de buitenwereld om de instantie van de singleton-klasse te krijgen.
/**
 * 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;
  }
}

Waarnemer patroon

Het waarnemerspatroon is een algemeen patroon, dat in veel contexten veel wordt gebruikt. Een echt voorbeeld kan worden genomen van YouTube: als je een kanaal leuk vindt en al het nieuws wilt ontvangen en nieuwe video's van dit kanaal wilt bekijken, moet je je op dat kanaal abonneren. Wanneer dit kanaal vervolgens nieuws publiceert, ontvangt u (en alle andere abonnees) een melding.

Een waarnemer heeft twee componenten. De ene is een omroeporganisatie (kanaal) en de andere is een ontvanger (u of een andere abonnee). De uitzender zal alle ontvangerinstanties afhandelen die zich erop hebben geabonneerd. Wanneer de uitzender een nieuwe gebeurtenis afvuurt, zal deze dit aan alle ontvangende instanties aankondigen. Wanneer de ontvanger een gebeurtenis ontvangt, moet deze op die gebeurtenis reageren door bijvoorbeeld YouTube in te schakelen en de nieuwe video af te spelen.

Implementeren van het waarnemerspatroon

  1. De omroeporganisatie moet methoden bieden waarmee ontvangers zich erop kunnen abonneren. Wanneer de uitzender een evenement afvuurt, moeten abonnees op de hoogte worden gebracht dat er een evenement heeft plaatsgevonden:

    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. De ontvanger moet een methode implementeren die de gebeurtenis van de uitzender afhandelt:

    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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow