Рубрики
Без рубрики

Паб-шаблон: canceito e Пример.

Alguns Meses Atrás em Uma publicação sobre, наблюдаемый eu exprowique nas minhas palavas como eu … Tagged с JavaScript, Pattern, Pubsub.

Alguns Meses Atrás em Uma publicação Sobre, наблюдаемый eu exprestique nas minhas palavas como eu endendia o padrão e dei um isemplo utilizando javascript linguagem. E Nesta nova pestagem vou tentar ary de forma simples o padrão publisher-subscriber, e ao ler às duas pestagens acredito que em sua mente vai ficar bem claro, как различные существующие экземпляры.

Ссылка Do Primeiro Post Sobre наблюдается:

https://dev.to/jucian0/observer-pattern-conceito-e-exemplo-4e8g

Este Padrão Pode Ser Muito útil Quando Você deseja Enviar UM Certo Evento E DeSeja Que Somente OS Interessados Nesse Detjando Assunto Sejam Notificados. Nesse Ponto percebemos uma diferença com o Наблюдаемое, Pois este vosui um em sua lógica de infulação a condição de selecionar o evesto que deseja publicar, e nem de pode escolher o evesto que deseja se inscrever.

Enquanto нет наблюдаемого вокалиста Dispara Um único Evento e todos os inscritos sãao natificados do evesto, no Publisher-Subscriber é tevencoorio definir o Evento que será publicAdo e que deseja se inscrever declarar o evesto que oSuí vescues u.

AppoveItAndo o post Offer em Que usi O Exemplo de uma publicação de Vaga de emprego vou modificar um pouco a analogia para servir ao nosso proposito.

Digamos que uma certa empresa Chamada atric esteja buscando oumentar seu quandro de funcionários, ela precisa de uma série de profisionais tais como, caldeireiro, torneiro mecânico, Motorista. Bem Pensando Em Tornar Isso Conhecido em toda a cidade ela anuncia em um jornal essas vagas, então vários interessados comparecem à empresa e se inscrevem, uns se inscrevem para vaga de cotorista, wootros para caldeireire e por fiM Para Torneiro Mecânico. Empresa garante a todos os candidatos de todas в agas que o processo seletivo sera muito transparente, e a ao final todos voao ser informados sobre o candidato escolhido de cada gaga. Нет окончательного процесса empresa prepara em e-mail para os candidatos athirista, wutro para torneiro mecânico e por fim para caldeireiro, e em seguida envia o-mails com os dizeres:

Agradecemos Sua Inscrição e Interesse em trabalhar em nossa empresa, ecebemos muitas inscrições para aga de x. o candidato escolhido é o hose antonio da silva.

Essa é Uma explicação bem simples da Ideia do Publisher-Subscriber, Perceba Que Cada de Vaga é Um Tipo de Evevo, E Os Profisionais de Cada Cateforia sespost Vaga Que O Mesmo Havia SE Candidatado.

class PubSub {
  constructor() {
    this.subscribers = {};
  }

  subscribe(event, fn) {
    if (Array.isArray(this.subscribers[event])) {
      this.subscribers[event] = [...this.subscribers[event], fn];
    } else {
      this.subscribers[event] = [fn];
    }
    return () => {
      this.unsubscribe(event, fn);
    };
  }

  unsubscribe(event, fn) {
    this.subscribers[event] = this.subscribers[event].filter(
      (sub) => sub !== fn
    );
  }

  publish(event, data) {
    if (Array.isArray(this.subscribers[event])) {
      this.subscribers[event].forEach((sub) => {
        sub(data);
      });
    }
    return false;
  }
}

export default new PubSub();
  • 1 A 4 – Começo Criando Uma Classe Com O Nome Pubsub E Em Seu Construtor Eu adicionei Um objeto vazio na propriedade. Esse objeto vai armazenar os evestos cadastrados, cada evesto sendo uma propriedade do objeto e cada propriedade cecebendo um array de pubscliers.
  • 6 A 15 – O Método подписаться на uma string e uma funcáo como armeryo, essa string sera o nome do evence e a funcáo é Um -подписчик, em seguida é preciSo validar se o array de subscribers esta vazio para distribui -Ло эм, ново, ray junto, Funcáo Passada por parâmetro ou colocar a Funcáo em um array vazio e por fim atribui абоненты Propriedade.
  • 17 a 21 – Отправляйте подписчики подписчиков OS, Elece o Evento e o o obcriber como argearmo e Удалите O Mesmo da Lista.
  • 17 a 22 – Публикуйте E O Método Que Vai Percorrer A Lista de stecervers E Exemard Cada Um Passando Os Dados Que o Mesmo checebe Como Armeryo.
  • 23 – Нет окончательного экспорта, um objeto da classe para para precisar usar new onde o recurco для utilizado.

E POR FIM COMO NA POSTAGEM передний размер Deixo UM Exemplo de Uso.

import "./styles.css";
import PubSub from "./PubSub";

const firstInput = document.getElementById("first-input");
const secondInput = document.getElementById("second-input");
const firstSubscriberBtn = document.getElementById("first-subscriber-btn");
const secondSubscriberBtn = document.getElementById("second-subscriber-btn");
const firstUnSubscriberBtn = document.getElementById("first-un-subscriber-btn");
const secondUnSubscriberBtn = document.getElementById(
  "second-un-subscriber-btn"
);
const textFirstSubscriber = document.getElementById("first-subscriber");
const textSecondSubscriber = document.getElementById("second-subscriber");

const firstText = (e) => (textFirstSubscriber.innerText = `${e}`);
const secondtText = (e) => (textSecondSubscriber.innerText = `${e}`);

firstInput.addEventListener("input", (e) =>
  PubSub.publish("first-event", e.target.value)
);

secondInput.addEventListener("input", (e) =>
  PubSub.publish("second-event", e.target.value)
);

firstSubscriberBtn.addEventListener("click", (e) => {
  e.preventDefault();
  PubSub.subscribe("first-event", firstText);
});

firstUnSubscriberBtn.addEventListener("click", (e) => {
  e.preventDefault();
  PubSub.unsubscribe("first-event", firstText);
});

secondSubscriberBtn.addEventListener("click", (e) => {
  e.preventDefault();
  PubSub.subscribe("second-event", secondtText);
});

secondUnSubscriberBtn.addEventListener("click", (e) => {
  e.preventDefault();
  PubSub.unsubscribe("second-event", secondtText);
});
  • 4 А 13 – Estou Selecionando os elementos html.
  • 15 a 16 – Duas Funcões simples Que atribuem Valores recebodos como argemsos para os elementos selecionados aydermente.
  • 18 A 24-Estou Me Inscrevendo нет Evento adicionando Uma Funcáo Como Ouvinte do Evovo “Para Cada Input E Dentro Dessas Funcões eu publico oses” First-event “E” E-Event “Valores Valores DOS.
  • 25 A 44 – Repito O Processo Ofter, Mas Dessa Vez ЕС estou me inscrevendo nos evestos, primeiro me inscrevo no “First-event”, Faco Esso Passando Uma Funcáo Como Ouvinte do Evoyo de Click de um Botан, Dessa forma ao clicar nesse botão estarei me inscrevendo no evendo mencionado. Esse Processo é Repetido para remover a Inscrição e criar a inscrição para o segundo Evento.

Mesmo Que você não точный Escrever esse patern para utilizar no dia a dia é muito vative como el funciona, pois, muitas bibliotecas que usamos comumente utilizam ele para inprevar suas soluçes. На próxima pestagem sobre o tema, abordarei como utilizar ele Нет контекста не реагировать.

Оригинал: “https://dev.to/jucian0/pub-sub-pattern-conceito-e-exemplo-14hb”