ts Decorator pattern

The solution for “ts Decorator pattern” can be found here. The following code will assist you in solving the problem.

/*Decorator
The Decorator pattern is a design pattern lets you dynamically change
the behavior of an object at run time
and it’s communly used in frameworks like Angular.

And you can implement the Decorator pattern in Typescript is very
easy and you can use the decorator module.

Again imagine you want to make a pizza and you want to make it
with tomato sauce, cheese and ham but you don’t want to repeat the
same steps for every pizza you make

First you need to make a pizza class:
*/
class Pizza {
public makePizza() {
console.log(‘Making a pizza…’);
}
}

// Then you make a decorator class that will decorate the pizza class:
class PizzaDecorator extends Pizza {
constructor(public pizza: Pizza) {
super();
}

public makePizza() {
this.pizza.makePizza();
}
}

// Then you make a concrete decorator class that extends the decorator class to add the cheese:
class CheeseDecorator extends PizzaDecorator {
constructor(pizza: Pizza) {
super(pizza);
}

public makePizza() {
super.makePizza();
console.log(‘Adding cheese…’);
}
}

// Then you make a concrete decorator class that extends the decorator
// class to add the ham:
class HamDecorator extends PizzaDecorator {
constructor(pizza: Pizza) {
super(pizza);
}

public makePizza() {
super.makePizza();
console.log(‘Adding ham…’);
}
}

// Then you make a concrete decorator class that extends the decorator
// class to add the mushrooms:
class MushroomDecorator extends PizzaDecorator {
constructor(pizza: Pizza) {
super(pizza);
}

public makePizza() {
super.makePizza();
console.log(‘Adding mushrooms…’);
}
}

// Then you make your pizza:
const pizza = new CheeseDecorator(new HamDecorator(new MushroomDecorator(new Pizza())));
pizza.makePizza();
// as you can see the decorator pattern uses nested classes and
// inheritance to add new functionality to an object.

Thank you for using DeclareCode; We hope you were able to resolve the issue.

More questions on [categories-list]

0
inline scripts encapsulated in