设计模式
java(23种)
1.单例模式:一个类只能有一个实例对象,提供一个全局访问点。(创建一个变量存放实例对象 如果对象存在直接返回,不存在则创建返回)
应用:弹窗 axios封装
···
function student(){
this.name="12";
this.ag="aa"
}
let obj=null; //存放对象
function sin(){
if(obj==null){ //不存在则新建
obj=new student();
}
return obj;
}
let a=new sin(1);
let b=new sin(3);
console.log(a===b); //true
···
2.工厂模式:用固定的方式批量创建对象
应用:权限和角色进行判断
function cat(name,age){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.tt = function(){
console.log(this.name);
}
return obj;
}
var a1= new cat("王1",10);
var a2= new cat("张2",22);
console.log(a1.tt(),a2.tt()) //王1 张2
3.观察者模式:多个观察者,对象发生变化时,通知所有观察者,让他们更新自己的状态。
let a={name:"周杰伦"};
let b ={name:"张杰"};
function han(oldV,newV){
b.name = newV;
console.log("b的值"+ newV);
}
Object.defineProperty(a,"name",{
enumerable:true, //当前属性是否可循环
configurable:true, //当前属性是否可被设置
set:function(val){ //设置值
han(name, val); //a name的值变了通知b name也变
name = val;
},get:function(){ //获取值
return name
}
})
a.name = "zhoujielun";
console.log(b.name); // b的值zhoujielun zhoujielun
4.发布订阅模式和观察者模式的区别?
观察者:观察者,被观察者。
订阅模式:发布==》中间层==》通知订阅者。