Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface Beverage {
- getDescription(): string;
- }
- class Coffee implements Beverage {
- public getDescription(): string {
- return 'Espresso';
- }
- }
- class Tea implements Beverage {
- public getDescription(): string {
- return 'Black Tea';
- }
- }
- class WithMilk implements Beverage {
- private component: Beverage;
- constructor(component: Beverage) {
- this.component = component;
- }
- public getDescription(): string {
- return `${this.component.getDescription()} & milk`;
- }
- }
- class WithSugar implements Beverage {
- private component: Beverage;
- constructor(component: Beverage) {
- this.component = component;
- }
- public getDescription(): string {
- return `${this.component.getDescription()} & sugar`;
- }
- }
- function clientCode(component: Beverage) {
- console.log(`RESULT: ${component.getDescription()}`);
- }
- let coffee = new Coffee();
- console.log('До оборачивания в декратор:');
- console.log(coffee.getDescription());
- coffee = new WithSugar(new WithMilk(coffee));
- console.log('После:');
- console.log(coffee.getDescription());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement