1.单例模式
无论调用多少次只会产生一个实例
let obj=(function(){
return {
fn1(){},
fn2(){}
})()
2.构造器模式
可以产生多个实例对象并且可以共有一些方法
class Fn(){
constructor(name){
this.name=name;
}
getName(){}
}
3.工厂模式
根据条件不同产生不同的结果
function factory(){
if(arguments.length==1){
//处理方法
};
if(arguments.length==2){
//处理方法
}
....
}
4.原型模式
function Person(){
function F(){};
F.prototype={
say(){
console.log(this.name)
};
let f=new F();
f.name="zhangsan";
return f;
}
5.发布订阅者模式
一对多的模式
let sub1 = {
update: function() {
console.log(1);
}
};
let sub2 = {
update: function() {
console.log(2);
}
};
let sub3 = {
update: function() {
console.log(3);
}
};
function Dep() {
this.subs = [sub1, sub2, sub3]
};
Dep.prototype = {
notify() {
this.subs.forEach(function(sub) {
sub.update()
})
}
};
let dep = new Dep();
let pub = {
publish: function() {
dep.notify()
}
};
6.代理模式
7.策略模式
8.建造者模式
9.中介者模式
10.装饰者模式