Search This Blog

2023/08/31

Prototype Design pattern

 // Prototype interface

class Animal {
constructor(name, species) {
this.name = name;
this.species = species;
}

clone() {
return null;
}
}

// Concrete prototypes
class Dog extends Animal {
constructor(name) {
super(name, "Dog");
}

clone() {
return new Dog(this.name);
}
}

class Cat extends Animal {
constructor(name) {
super(name, "Cat");
}

clone() {
return new Cat(this.name);
}
}

// Client
const originalDog = new Dog("Buddy");
const clonedDog = originalDog.clone();

console.log(originalDog); // Dog { name: 'Buddy', species: 'Dog' }
console.log(clonedDog); // Dog { name: 'Buddy', species: 'Dog' }

No comments:

Post a Comment