一、单例模式
单例模式就是通过单独的一个实例化对象,在调用函数方法时,输入不同的参数数据,执行对应的程序效果。
多个对象可以优化
原始方法:
根据不同的数据,创建不同的实例化对象,在实例化对象中,存储不同的数据数值,函数直接调用实例化对象中的数据数值
优化方法:
创建实例化对象时,不设定存储数据,调用函数时,输入需要的参数,定义生成一个实例化对象,就可以执行所有需要的效果。
//原始方法
class createObj{
constructor(name,age){
this.name=name;
this.age=age;
}
fun1(){
console.log(this.name);
}
fun2(){
console.log(this.age);
}
fun3(){
console.log(this.name,this.age)
}
}
const obj1=new createObj('张三',18);
const obj2=new createObj('李四',19);
const obj3=new createObj('王五',20);
console.log(obj1);
console.log(obj2);
console.log(obj3);
//优化方法
class createObj(){
constructor(){};
fun1(name){
console.log(name)
};
fun2(age){
console.log(age);
}
fun3(name,age){
console.log(name,age);
}
}
const obj=new createObj ();
obj.fun1('张三');
obj.fun1('李四');
obj.fun1('王五');
obj.fun2(18);
obj.fun2(19);
obj.fun2(20);
obj4.fun3('张三',20);
obj4.fun3('李四',21);
obj4.fun3('王五',22);
单例模式的核心:只创建一个实例化对象,通过调用函数时输入不同的数据实现程序效果,即使多次调用构造函数,也要确保只生成一个实例化对象,不是每次调用都会生成一个新的实例化对象。
class createObj{
constructor(){}
fun1(name){
console.log(name)
}
fun2(age){
console.log(age)
}
fun3(name,age){
console.log(name,age)
}
}
let obj='';
function fun(){
if(obj===' '){
obj=new createObj();
return obj;
}else{
return obj;
}
}
const newObj1=fun();
用闭包的语法形式,将所有程序定义在函数中.
单例模式是一个固定的语法套路,变量存储的是立即执行函数的执行结果,也就是return的匿名函数。
//使用立即执行函数,在封装函数的同时,立即执行调用函数本身
const res=(function(){
class createObj{
constructor(){};
fun1(name){
console.log(name)
}
fun2(age){
console.log(age)
}
fun3(name.age){
console.log(name,age)
}
}
let obj=' ';
return function(){
if(obj===' '){
obj=new createObj();
return obj;
}else{
return obj;
}
}
})()