一、组合模式
一个项目往往有多个实例化对象,每一个实例化对象都需要调用执行入口函数init(),使用一个构造函数创建一个实例化对象,存储所有需要调用执行的实例化对象,再用入口函数 init()统一调用。简单理解就是一键启动。
//构造函数1
class Fun1{
constructor(){}
init(){
this.f11();
this.f12();
}
f11(){console.log(111)};
f12(){console.log(222)};
}
//构造函数2
class Fun2{
constructor(){};
init(){
this.f21();
this.f22();
}
f21(){console.log(221)};
f22(){console.log(222)};
}
//构造函数3
class Fun3{
constructor(){};
init(){
this.f31();
this.f32();
}
f31(){console.log(311)}
f32(){console.log(321)}
}
const obj1=new Fun1();
const obj2=new Fun2();
const obj3=new Fun3();
//组合模式
class Group{
constructor(){
this.arr=[ ];
}
add(...array){
array.forEach(item=>{
if(this.arr.indexOf(item) === -1){
this.arr.push(item);
}
})
};
extend(){
this.arr.forEach(item=>{
item.init();
})
};
}
const objGroup=new Group();
objGroup.add(obj1,obj2);
objGroup.add(obj3);
objGroup.extend();