Three characteristics of the singleton pattern:
1. The class has only one instance
2. The class creates the instance by itself (creates its own instance object inside the class)
3. Exposes this to the entire system The instance interface
looks like this in Java
class Singleton {
//Private, static instance of the class itself
private static Singleton instance = new Singleton();
//Private constructor (constructor, constructor, constructor)
private Singleton(){}
//Public, static factory method
public static Singleton getInstance() {
return instance;
}
}
Use When
Singleton obj = Singleton.getInstance();
This singleton class instance will be instantiated when itself is loaded, even if the loader is static. Therefore, for resource-intensive and configuration-intensive monoliths, a more reasonable approach is to defer instantiation (new) until the time it is used. That is, lazy loading (Lazy loading), which is often used for monoliths that must load large amounts of data. Modify
class LazySingleton {
//Initially: null, not instantiated yet
private static LazySingleton instance = null;
//Private constructor (constructor, constructor, constructor method)
private LazySingleton(){}
//Public , a static factory method, create the singleton when needed.
public static LazySingleton getInstance() {
if( instance == null ) {
instance = new LazySingleton();
}
return instance;
}
}
The usage is the same as above.
The singleton pattern is one of the most basic and useful patterns in Javascript. It provides a means of organizing code into a logical unit that is accessed through a single variable.
Singles have many uses in Javascript and can be used to divide namespaces to reduce the proliferation of global variables. It can also be used in branching techniques to handle differences between browsers.
There are many ways to implement the singleton pattern in Javascript, each of which has its own advantages or disadvantages.
1. Object literal implementation is the most basic and simplest singleton
var Singleton = {
attr1 : 1,
attr2 : 'hello',
method1 : function(){alert(this.attr2);},
method2 : function( arg){}
}
In this method, all members of the object are accessed through Singleton plus dot. All members are public, nothing private. When the variable Singleton is executed, it will load (instantiate) itself, that is, it is not lazy loaded.
In addition, there are some risks in method1 using this to access other members of the singleton, because the context of method1 does not always point to the Singleton object.
For example, when method1 is used as an event listener, this may point to a dom element, and undefined may be displayed.
2. Closure implements the singleton of private members
var Singleton = function(){
var attr = 1, fn = function(){};
return {
method : function(){ fn(); },
getAttr : function (){ return attr; }
};
}();
In this way, var defines the private member attribute attr, method fn, and then returns a public interface method and getAttr. When the implementation is modified in the future, the interface methods method and getAttr remain unchanged, and only the specific implementation of private attr and fn needs to be modified. Use the following
Singleton.method();
Singleton .getAttr();
3. Closure implements lazy instantiation of private members as a singleton
var LazySingleton = function(){
var attr = 1, fn = function(){};
var obj = {
method: function(){ fn(); },
getAttr : function(){ return attr; }
};
function init(){
return obj;
}
return {getInstace: init};
}();
Applicable occasions have been mentioned above: for those single entities that must load a large amount of data, they are not instantiated until they are needed to use it. The usage is like this
LazySingleton.getInstance().method ();
LazySingleton.getInstance().getAttr();

JavaScript is the core language of modern web development and is widely used for its diversity and flexibility. 1) Front-end development: build dynamic web pages and single-page applications through DOM operations and modern frameworks (such as React, Vue.js, Angular). 2) Server-side development: Node.js uses a non-blocking I/O model to handle high concurrency and real-time applications. 3) Mobile and desktop application development: cross-platform development is realized through ReactNative and Electron to improve development efficiency.

The latest trends in JavaScript include the rise of TypeScript, the popularity of modern frameworks and libraries, and the application of WebAssembly. Future prospects cover more powerful type systems, the development of server-side JavaScript, the expansion of artificial intelligence and machine learning, and the potential of IoT and edge computing.

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.

Python is more suitable for data science and machine learning, while JavaScript is more suitable for front-end and full-stack development. 1. Python is known for its concise syntax and rich library ecosystem, and is suitable for data analysis and web development. 2. JavaScript is the core of front-end development. Node.js supports server-side programming and is suitable for full-stack development.

JavaScript does not require installation because it is already built into modern browsers. You just need a text editor and a browser to get started. 1) In the browser environment, run it by embedding the HTML file through tags. 2) In the Node.js environment, after downloading and installing Node.js, run the JavaScript file through the command line.

How to send task notifications in Quartz In advance When using the Quartz timer to schedule a task, the execution time of the task is set by the cron expression. Now...

How to obtain the parameters of functions on prototype chains in JavaScript In JavaScript programming, understanding and manipulating function parameters on prototype chains is a common and important task...

Analysis of the reason why the dynamic style displacement failure of using Vue.js in the WeChat applet web-view is using Vue.js...


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

SublimeText3 Linux new version
SublimeText3 Linux latest version

Dreamweaver Mac version
Visual web development tools

SublimeText3 English version
Recommended: Win version, supports code prompts!

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software