Szukaj…


Wprowadzenie

Wzorce projektowe to sformalizowane najlepsze praktyki, których programiści mogą używać do rozwiązywania typowych problemów podczas projektowania aplikacji lub systemu.

Wzorce projektowe mogą przyspieszyć proces opracowywania, zapewniając przetestowane, sprawdzone paradygmaty programistyczne.

Ponowne użycie wzorców projektowych pomaga zapobiegać subtelnym problemom, które mogą powodować poważne problemy, a także poprawia czytelność kodu dla programistów i architektów znających wzorce.

Przykład klasy Singleton

Wzór singletonu Java

Aby wdrożyć wzór Singleton, mamy różne podejścia, ale wszystkie mają wspólne wspólne koncepcje.

  • Prywatny konstruktor, aby ograniczyć tworzenie instancji klasy z innych klas.
  • Prywatna zmienna statyczna tej samej klasy, która jest jedyną instancją klasy.
  • Publiczna metoda statyczna, która zwraca instancję klasy, jest to dostęp globalny
  • wskaż zewnętrzny świat, aby uzyskać instancję klasy 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;
  }
}

Wzór obserwatora

Wzorzec obserwatora jest powszechnym wzorcem, który jest szeroko stosowany w wielu kontekstach. Prawdziwy przykład można wziąć z YouTube: jeśli lubisz kanał i chcesz otrzymywać wszystkie wiadomości i oglądać nowe filmy z tego kanału, musisz zasubskrybować ten kanał. Następnie, za każdym razem, gdy ten kanał publikuje jakiekolwiek wiadomości, Ty (i wszyscy inni subskrybenci) otrzymasz powiadomienie.

Obserwator będzie miał dwa elementy. Jeden to nadawca (kanał), a drugi to odbiornik (ty lub inny subskrybent). Nadawca obsłuży wszystkie subskrybowane instancje odbiornika. Gdy nadawca uruchomi nowe zdarzenie, ogłosi to wszystkim instancjom odbiorcy. Gdy odbiornik otrzyma zdarzenie, będzie musiał zareagować na to zdarzenie, na przykład włączając YouTube i odtwarzając nowe wideo.

Implementowanie wzorca obserwatora

  1. Nadawca musi zapewnić metody pozwalające odbiorcom na subskrybowanie i anulowanie subskrypcji. Gdy nadawca uruchamia zdarzenie, subskrybenci muszą zostać powiadomieni o wystąpieniu zdarzenia:

    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. Odbiornik musi zaimplementować metodę, która obsługuje zdarzenie od nadawcy:

    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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow