1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
class Monkey { shout() { console.log("Ooh oo aa aa!"); }
accept(operation: any) { operation.visitMonkey(this); } }
class Lion { roar() { console.log("Roaaar!"); }
accept(operation: any) { operation.visitLion(this); } }
const speak = { visitMonkey(monkey: any) { monkey.shout(); }, visitLion(lion: any) { lion.roar(); } }
const jump = { visitMonkey(monkey: any) { console.log("Jumped 20 feet high! on to the tree!"); }, visitLion(lion: any) { console.log("Jumped 7 feet! Back on the ground!"); }, visitDolphin(dolphin: any) { console.log("Walked on water a little and disappeared"); } } const monkey = new Monkey(); const lion = new Lion();
monkey.accept(speak); monkey.accept(jump); lion.accept(speak); lion.accept(jump);
|