Skip to content

Instantly share code, notes, and snippets.

@kfwong
Created October 23, 2019 04:28
Show Gist options
  • Select an option

  • Save kfwong/b0a91d1a28d8e7b207953cfa1758b1cd to your computer and use it in GitHub Desktop.

Select an option

Save kfwong/b0a91d1a28d8e7b207953cfa1758b1cd to your computer and use it in GitHub Desktop.
Decorator Pattern
interface Greetable{
greet(): String;
}
class Person implements Greetable{
constructor(public name: String) { };
greet(): String {
return "Hello";
}
}
class PersonDecorator implements Greetable{
constructor(private person: Person) { };
greetFormally(): String{
return `${this.person.greet()}, my name is ${this.person.name}.`;
}
greet(): String {
return this.greetFormally();
}
}
const person = new Person("kangfei");
const formalPerson = new PersonDecorator(person);
console.log(person.greet());
console.log(formalPerson.greet());
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment