组合模式-坦克大战-js

本文通过一个游戏开发的示例,详细介绍了组合模式的实现和使用。组合模式允许开发者将复杂对象以树形结构进行组织,使得单个对象和组合对象能够一致地被对待。文章展示了如何通过JavaScript实现这一模式,包括射击、跑动等功能的组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求

基本机能有,射击,跑,红外等,这些机能可以组合成新的新能,新的的机能又可以被另一个新的机能组合。

运行 

代码


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);
}
*/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值