Table of Contents
subscribe to publish
Observer mode
The difference between the two
eventHub publish and subscribe
Home Web Front-end JS Tutorial Let's briefly talk about publish, subscribe and observer patterns, and talk about the differences between them.

Let's briefly talk about publish, subscribe and observer patterns, and talk about the differences between them.

Jun 18, 2021 am 10:32 AM
publish-subscribe model Observer pattern

This article will introduce you to the publish-subscribe and observer patterns, and talk about the differences between the two. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to everyone.

Let's briefly talk about publish, subscribe and observer patterns, and talk about the differences between them.

Some time ago, I had a whim and wrote promises one by one. Promise happens to be the subscription publishing model. The mobx used for development at work is also an observer model. Although they are all used, but I have never thought about the difference between the two, and the difference analysis on the Internet is confusing. I will combine a summary of my own and the simplest implementation (it is also easy to understand because it is simple) to share and deepen my understanding of the two

subscribe to publish

1. Implementation ideas

  • arr Make a cache center for subscribed events
  • Push the things that need to be done through on the arr cache array Middle
  • When waiting for the event to trigger, emit the execution event in sequence

2. Code implementation

interface eventHub {
  arr: Array<Function>;
  on(fn: Function): void;
  emit(): void;
}
interface Person {
  age: number;
  name: string;
}
let eventHub: eventHub = {
  arr: [] as Array<Function>,
  // 订阅
  on(fn: Function) {
    this.arr.push(fn);
  },
  //   发布
  emit() {
    this.arr.forEach((fn) => fn());
  },
};
let person: Person = {} as Person;
eventHub.on(() => {
//订阅的事件里判断当 person长度为2时 打印person,
  if (Object.keys(person).length == 2) {
    console.log(person);
  }
});
setTimeout(function () {
  person.age = 27;
  //发布的时候去遍历 this.arr 并执行第一次
  eventHub.emit();
}, 10);
setTimeout(function () {
  person.name = "Zoe";
  //发布的时候去遍历 this.arr 并执行第二次
  eventHub.emit();
}, 20);
Copy after login

3.Result

Although it was published twice, in the end the console in on was only executed once due to external conditions

Lets briefly talk about publish, subscribe and observer patterns, and talk about the differences between them.

Observer mode

1. Implementation idea

is similar to the observer pattern, but needs to be divided into an observer and the observed

  • The observer and the observed Observers are associated, (internally based on the publish-subscribe model)

2. Code implementation

// 被观察者
class Subject {
  name: string; //实例上定义一个name属性
  state: string;
  observers: any[];
  constructor(name:string) {
    this.name = name;
    this.observers = [];
    this.state = "";
  }
  attach(o) {
    //传入观察者
    this.observers.push(o);
  }
  setState(newState) {
    this.state = newState;
    this.observers.forEach((o) => o.update(this));
  }
}
// 观察者
class Observer {
  name: string;
  constructor(name) {
    this.name = name;
  }
  update(interviewee) {
    console.log(`${interviewee.name} say to: ${this.name} ZOE的${interviewee.state}`);
  }
}
let hr = new Subject("HR");
let observer1 = new Observer("内推者");
let observer2 = new Observer("面试者");
hr.attach(observer1);
hr.attach(observer2);
hr.setState("面试通过了");
// baby.setState("面试没通过");
Copy after login

3. Implementation result

Lets briefly talk about publish, subscribe and observer patterns, and talk about the differences between them.

The difference between the two

eventHub publish and subscribe

  • on(subscribe ) and publishing (emit). There is no direct connection between them. They rely on the intermediate arr to connect and subscribe one push to arr. When emitting, arr is executed in sequence

##Observer mode

    There is a relationship between the observer and the observed, (internally based on the publish-subscribe model)
  • Pass the instance of the observer as a parameter into the attach method of the observed and cache it in In the observers array
  • When the observer setState is called, the update method of the observer in the cache array observers is called sequentially
For more programming-related knowledge, please visit:

Programming Video! !

The above is the detailed content of Let's briefly talk about publish, subscribe and observer patterns, and talk about the differences between them.. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

Java Tutorial
1662
14
PHP Tutorial
1261
29
C# Tutorial
1234
24
How to implement the observer pattern using Event Manager in the Phalcon framework How to implement the observer pattern using Event Manager in the Phalcon framework Aug 02, 2023 pm 07:25 PM

How to use the event manager (EventManager) to implement the observer pattern in the Phalcon framework Introduction: The event manager (EventManager) is one of the powerful and flexible core functions in the Phalcon framework. By using event managers, you can easily implement the Observer pattern to achieve loose coupling between objects in your application. This article will introduce you to how to use the event manager in the Phalcon framework to implement the observer pattern and provide corresponding code examples. step one

PHP Design Patterns: The Path to Code Excellence PHP Design Patterns: The Path to Code Excellence Feb 21, 2024 pm 05:30 PM

Introduction PHP design patterns are a set of proven solutions to common challenges in software development. By following these patterns, developers can create elegant, robust, and maintainable code. They help developers follow SOLID principles (single responsibility, open-closed, Liskov replacement, interface isolation and dependency inversion), thereby improving code readability, maintainability and scalability. Types of Design Patterns There are many different design patterns, each with its own unique purpose and advantages. Here are some of the most commonly used PHP design patterns: Singleton pattern: Ensures that a class has only one instance and provides a way to access this instance globally. Factory Pattern: Creates an object without specifying its exact class. It allows developers to conditionally

Uncovering the secrets of PHP design patterns Uncovering the secrets of PHP design patterns Feb 21, 2024 pm 01:19 PM

1. What are PHP design patterns? PHP design patterns are predefined code templates designed to solve common software development problems. They provide proven solutions that improve code reusability, maintainability, and scalability. 2. Types of PHP design patterns There are many different design patterns in PHP, and each pattern has its specific purpose. The most common patterns include: Singleton Pattern: Ensures there is only one instance of a class. Factory Pattern: Creates objects of different types based on the data passed to it. Strategy mode: Allows a program to change its behavior at runtime. Observer Pattern: Allows objects to subscribe to events and be notified when events occur. 3. Singleton mode example classSingleInstance{private

How to implement distributed message publishing and subscription in PHP microservices How to implement distributed message publishing and subscription in PHP microservices Sep 24, 2023 am 08:22 AM

How to implement distributed message publishing and subscription in PHP microservices requires specific code examples. With the popularity of microservice architecture, distributed message publishing and subscription have become an important part of building scalable and high-availability microservices. In PHP microservices, this feature can be achieved using message queues. This article will introduce how to use RabbitMQ, a common message queue tool, to implement distributed message publishing and subscription. First, we need to install RabbitMQ and configure its connection. The following is a simple PHP script

Improve Java programming skills: master the implementation of adapter pattern and observer pattern Improve Java programming skills: master the implementation of adapter pattern and observer pattern Dec 23, 2023 am 11:52 AM

Improve Java programming skills: Master the implementation of adapter mode and observer mode, need specific code examples Introduction: In daily software development, we often need to deal with compatibility issues between different classes, and also need to implement various user interfaces Event monitoring and processing. Adapter pattern and Observer pattern are two commonly used design patterns that can effectively solve these problems. This article will introduce the implementation of adapter pattern and observer pattern in detail, and provide specific Java code examples to help readers better understand. one,

Solutions to publish-subscribe model issues in Vue development Solutions to publish-subscribe model issues in Vue development Jun 30, 2023 pm 05:43 PM

In Vue development, we often encounter problems dealing with various data interactions and component communication. One of the common questions is how to deal with the publish-subscribe pattern. The publish-subscribe pattern is a commonly used design pattern used to solve communication problems between components. In this article, I will introduce how to deal with publish-subscribe model problems encountered in Vue development. First, we need to understand the basic concepts of the publish-subscribe model. The publish-subscribe pattern is a one-to-many relationship in which one object (publisher) sends messages and other objects (subscribers) receive

Getting Started with PHP: Observer Pattern Getting Started with PHP: Observer Pattern May 20, 2023 am 08:21 AM

Design patterns are a widely used concept in modern software development. Design patterns are common solutions found in software systems that are tested and proven to help developers build complex software applications more efficiently. The observer pattern is one of the most common design patterns, and it is also an important concept that PHP developers need to master. In this article, we will introduce the concept and implementation of the Observer pattern and demonstrate how to use it in a PHP application. What is the observer pattern? Observer pattern is a

What are the implementation methods of observer pattern in java framework? What are the implementation methods of observer pattern in java framework? Jun 03, 2024 pm 05:05 PM

The observer pattern in the Java framework defines behavior through interfaces and abstract classes (1); Subject and Observer classes implement management and response behavior (2); Subject provides subscription and cancellation methods, maintains observer collections, and notifies observers (3) . In the example, Subject manages observers and triggers events (4), and ConcreteObserver responds to events (5).

See all articles