介绍
责任链模式,它允许将请求沿着处理链传递,直到有一个处理者能够处理该请求为止。
主要概念:
- 处理者接口(Handle Interface):定义处理接口的请求,通常包含一个处理方法。
- 具体处理者(Conreate Handler): 实现处理者接口,负责处理请求,如果自己无法处理,则将请求传递给下一个处理者。
- 客户端(Client):创建责任链并向其发送请求。
ts代码
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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| interface Handler { setNext(handler: Handler): Handler handleRequest(amount: number): void }
class CEO implements Handler { private nextHandler: Handler | null
constructor() { this.nextHandler = null }
setNext(handler: Handler): Handler { this.nextHandler = handler return handler }
handleRequest(amount: number) { if (amount > 1000) { console.log('CEO 批准了该购买请求'); } else if (this.nextHandler) { this.nextHandler.handleRequest(amount) } else { console.log('无人处理该购买请求'); } } }
class VP implements Handler { private nextHandler: Handler | null
constructor() { this.nextHandler = null }
setNext(handler: Handler): Handler { this.nextHandler = handler return handler }
handleRequest(amount: number) { if (amount > 500 && amount <= 1000) { console.log('副总裁批准了该购买请求'); } else if (this.nextHandler) { this.nextHandler.handleRequest(amount) } else { console.log('无人处理该购买请求'); } } }
class Manager implements Handler { private nextHandler: Handler | null
constructor() { this.nextHandler = null }
setNext(handler: Handler): Handler { this.nextHandler = handler return handler }
handleRequest(amount: number) { if (amount <= 500) { console.log('经理批准了该购买请求'); } else if (this.nextHandler) { this.nextHandler.handleRequest(amount); } else { console.log('无人处理该购买请求'); } } }
const ceo = new CEO(); const vp = new VP(); const manager = new Manager();
manager.setNext(vp).setNext(ceo);
manager.handleRequest(300);
manager.handleRequest(800);
manager.handleRequest(1200);
|