需求
基本机能有,射击,跑,红外等,这些机能可以组合成新的新能,新的的机能又可以被另一个新的机能组合。
运行
代码
console.log('组合模式');
var index = 0;
class Component {
constructor() {
this.components = new Array();
this.id = index++;
}
operation() {
for (var i in this.components) {
this.components[i].operation();
}
}
add(comfun) {
this.components.push(comfun);
}
remove(fun) {
for (var i = 0; i < components.length; i++) {
if (i.id == fun.id) {
operations.splice(i, 1);
}
}
}
}
class Sort extends Component {
constructor() {
super();
}
operation() {
console.log("射击");
}
}
class Run extends Component {
constructor() {
super();
}
operation() {
console.log("跑");
}
}
class Tank extends Component {
constructor() {
super();
}
}
// 客户端
class Client {
main() {
console.log("简单对象")
var sort = new Sort();
sort.operation();
var run = new Run();
run.operation();
console.log("组合对象运行")
var tank = new Tank();
tank.add(sort);
tank.add(run);
tank.operation();
console.log("(组合+组合)对象运行")
var sort2 = new Sort();
var tank2 = new Tank();
tank2.add(sort2);
tank2.add(tank);
tank2.operation();
}
}
var client = new Client();
client.main();
//数组实验确认
/*
var arrs = [1, 2, 3];
arrs.push(4);
for (var i in arrs) {
console.log(arrs[i]);
}
var index = arrs.indexOf(4);
console.log("index:" + index);
var arra2 = new Array();
arra2.push(1);
for (var i in arra2) {
console.log(arrs[i]);
}
class A {
constructor(a) {
this.a = a;
}
}
var arrs3 = new Array();
arrs3.push(new A(5));
for (var i in arrs3) {
console.log(arrs3[i].a);
}
*/