Table of Contents
What is proxy mode?
Home Web Front-end JS Tutorial js design patterns: what is the proxy pattern? Introduction to js proxy mode

js design patterns: what is the proxy pattern? Introduction to js proxy mode

Aug 17, 2018 pm 04:09 PM

This article brings you content about js design patterns: What is the proxy pattern? The introduction of js proxy mode has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

What is proxy mode?

Scenario: Xiao Ming chases girl A

  • Non-agent mode: Xiao Ming=花=> Girl A

  • Agent mode: Xiao Ming =花=> Let girl A’s friend B help =花=> Girl A

##Definition: Provide an agent for other objects to control this object Access.

Mainly solves: Problems caused when accessing objects directly, for example: the object to be accessed is on a remote machine. In object-oriented systems, direct access to some objects will cause a lot of trouble to users or the system structure due to certain reasons (for example, object creation is expensive, or certain operations require security control, or require out-of-process access). We can add an access layer to this object when accessing this object.

When to use: Want to have some control when accessing an object.

How to solve: Add an intermediate layer.

Application examples: 1. Shortcuts in Windows. 2. When Zhu Bajie went to find Gao Cuilan, he turned out to be Sun Wukong. It can be understood like this: Gao Cuilan's appearance was abstracted, and both Gao Cuilan and Sun Wukong implemented this interface. When Zhu Bajie visited Gao Cuilan, he couldn't tell that this was Sun Wukong, so Sun Wukong was said to be Gao Cuilan. Agent class. 3. You don’t have to buy train tickets at the train station, you can also go to an agency. 4. A check or bank deposit certificate is a proxy for the funds in the account. Checks are used in place of cash in market transactions and provide control over the funds in the issuer's account. 5. spring aop.

Advantages: 1. Clear responsibilities. 2. High scalability. 3. Intelligent.

Disadvantages: 1. Since a proxy object is added between the client and the real subject, some types of proxy modes may cause the request processing speed to slow down. 2. Implementing the proxy mode requires additional work, and the implementation of some proxy modes is very complex.

Usage scenarios: Divided according to responsibilities, there are usually the following usage scenarios: 1. Remote agent. 2. Virtual agent. 3. Copy-on-Write agent. 4. Protect (Protect or Access) agent. 5. Cache agent. 6. Firewall proxy. 7. Synchronization agent. 8. Smart Reference agent.

Notes: 1. The difference between the adapter pattern and the adapter pattern: the adapter pattern mainly changes the interface of the object under consideration, while the proxy pattern cannot change the interface of the proxy class. 2. The difference between the decorator mode and the decorator mode: the decorator mode is to enhance the function, while the proxy mode is to control it.

There are many types of proxy modes. The most commonly used ones in JS are virtual proxy and caching proxy.

Virtual proxy implements image preloading

The following code uses the proxy mode to implement image preloading. You can see that the proxy mode cleverly separates the image creation and preloading logic, and in If preloading is not needed in the future, just change the request ontology instead of the request proxy object.

const myImage = (function() {
  const imgNode = document.createElement('img')
  document.body.appendChild(imgNode)
  return {
    setSrc: function(src) {
      imgNode.src = src
    }
  }
})()

const proxyImage = (function() {
  const img = new Image()
  img.onload = function() { // http 图片加载完毕后才会执行
    myImage.setSrc(this.src)
  }
  return {
    setSrc: function(src) {
      myImage.setSrc('loading.jpg') // 本地 loading 图片
      img.src = src
    }
  }
})()

proxyImage.setSrc('http://loaded.jpg')
Copy after login

Cache proxy implements product calculation

const mult = function() {
  let a = 1
  for (let i = 0, l; l = arguments[i++];) {
    a = a * l
  }
  return a
}

const proxyMult = (function() {
  const cache = {}
  return function() {
    const tag = Array.prototype.join.call(arguments, ',')
    if (cache[tag]) {
      return cache[tag]
    }
    cache[tag] = mult.apply(this, arguments)
    return cache[tag]
  }
})()

proxyMult(1, 2, 3, 4) // 24
Copy after login

Recommendation: Don’t guess whether you need to use the proxy mode during development. If you find that it is inconvenient to use an object directly, it is not too late to optimize it.

Related recommendations:

js design pattern: What is the strategy pattern? Introduction to js strategy pattern

#js design pattern: What is singleton pattern? Introduction to js singleton mode

The above is the detailed content of js design patterns: what is the proxy pattern? Introduction to js proxy mode. 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)

What should I do if I encounter garbled code printing for front-end thermal paper receipts? What should I do if I encounter garbled code printing for front-end thermal paper receipts? Apr 04, 2025 pm 02:42 PM

Frequently Asked Questions and Solutions for Front-end Thermal Paper Ticket Printing In Front-end Development, Ticket Printing is a common requirement. However, many developers are implementing...

Demystifying JavaScript: What It Does and Why It Matters Demystifying JavaScript: What It Does and Why It Matters Apr 09, 2025 am 12:07 AM

JavaScript is the cornerstone of modern web development, and its main functions include event-driven programming, dynamic content generation and asynchronous programming. 1) Event-driven programming allows web pages to change dynamically according to user operations. 2) Dynamic content generation allows page content to be adjusted according to conditions. 3) Asynchronous programming ensures that the user interface is not blocked. JavaScript is widely used in web interaction, single-page application and server-side development, greatly improving the flexibility of user experience and cross-platform development.

Who gets paid more Python or JavaScript? Who gets paid more Python or JavaScript? Apr 04, 2025 am 12:09 AM

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

How to merge array elements with the same ID into one object using JavaScript? How to merge array elements with the same ID into one object using JavaScript? Apr 04, 2025 pm 05:09 PM

How to merge array elements with the same ID into one object in JavaScript? When processing data, we often encounter the need to have the same ID...

Is JavaScript hard to learn? Is JavaScript hard to learn? Apr 03, 2025 am 12:20 AM

Learning JavaScript is not difficult, but it is challenging. 1) Understand basic concepts such as variables, data types, functions, etc. 2) Master asynchronous programming and implement it through event loops. 3) Use DOM operations and Promise to handle asynchronous requests. 4) Avoid common mistakes and use debugging techniques. 5) Optimize performance and follow best practices.

How to achieve parallax scrolling and element animation effects, like Shiseido's official website?
or:
How can we achieve the animation effect accompanied by page scrolling like Shiseido's official website? How to achieve parallax scrolling and element animation effects, like Shiseido's official website? or: How can we achieve the animation effect accompanied by page scrolling like Shiseido's official website? Apr 04, 2025 pm 05:36 PM

Discussion on the realization of parallax scrolling and element animation effects in this article will explore how to achieve similar to Shiseido official website (https://www.shiseido.co.jp/sb/wonderland/)...

The difference in console.log output result: Why are the two calls different? The difference in console.log output result: Why are the two calls different? Apr 04, 2025 pm 05:12 PM

In-depth discussion of the root causes of the difference in console.log output. This article will analyze the differences in the output results of console.log function in a piece of code and explain the reasons behind it. �...

How to implement panel drag and drop adjustment function similar to VSCode in front-end development? How to implement panel drag and drop adjustment function similar to VSCode in front-end development? Apr 04, 2025 pm 02:06 PM

Explore the implementation of panel drag and drop adjustment function similar to VSCode in the front-end. In front-end development, how to implement VSCode similar to VSCode...

See all articles