Поиск…


Вступление

Шаблоны проектирования - это формализованные передовые методы, которые программист может использовать для решения общих проблем при разработке приложения или системы.

Шаблоны проектирования могут ускорить процесс разработки, предоставив проверенные, проверенные парадигмы развития.

Повторное использование шаблонов проектирования помогает предотвратить тонкие проблемы, которые могут вызвать серьезные проблемы, а также улучшает читаемость кода для кодеров и архитекторов, знакомых с шаблонами.

Пример Singleton Class

Шаблон Java Singleton

Для реализации шаблона Singleton у нас есть разные подходы, но все они имеют общие понятия.

  • Частный конструктор для ограничения экземпляра класса из других классов.
  • Частная статическая переменная того же класса, которая является единственным экземпляром класса.
  • Открытый статический метод, возвращающий экземпляр класса, это глобальный доступ
  • point для внешнего мира, чтобы получить экземпляр класса 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;
  }
}

Схема наблюдателя

Шаблон наблюдателя является общей схемой, которая широко используется во многих контекстах. Реальный пример можно взять с YouTube: когда вам нравится канал и вы хотите получать все новости и смотреть новые видео с этого канала, вам нужно подписаться на этот канал. Затем, всякий раз, когда этот канал публикует новости, вы (и все остальные подписчики) получите уведомление.

Наблюдатель будет иметь два компонента. Один из них - вещатель (канал), а другой - приемник (вы или любой другой абонент). Передатчик будет обрабатывать все экземпляры получателя, которые подписались на него. Когда вещатель запускает новое событие, он объявит об этом всем экземплярам приемника. Когда получатель получает событие, он должен будет реагировать на это событие, например, включив YouTube и воспроизведя новое видео.

Внедрение шаблона наблюдателя

  1. Передатчик должен предоставить методы, позволяющие получателям подписываться и отписаться от него. Когда вещатель запускает событие, абоненты должны быть уведомлены о том, что произошло событие:

    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. Получателю необходимо реализовать метод, который обрабатывает событие от вещателя:

    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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow