class animal {
private static instances: animal[] = [];
private static changeStatus(instance: animal) {
animal.instances.forEach((item: animal) => {
if (item !== instance) {
item.setStatus(false);
}
})
}
constructor(private status = false) {
animal.instances.push(this);
}
setStatus(status: boolean) {
this.status = status;
}
getStatus() {
return this.status;
}
enableStatus() {
this.setStatus(true);
animal.changeStatus(this);
}
}
const [cat, dog, pig] = [new animal(), new animal(), new animal()];
cat.enableStatus();
console.log(cat.getStatus(), dog.getStatus(), pig.getStatus());
dog.enableStatus();
console.log(cat.getStatus(), dog.getStatus(), pig.getStatus());
pig.enableStatus();
console.log(cat.getStatus(), dog.getStatus(), pig.getStatus());
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…