«abstract»
Approver
- next: Approver
+ handle(req)
+ setNext(a)
Manager
+ handle()
Director
+ handle()
CEO
+ handle()
The chain
1abstract class Approver { Approver next; void setNext(Approver a){...} void handle(Request r){...} }2class Manager extends Approver { ... } // limit $10003class Director extends Approver { ... } // limit $100004class CEO extends Approver { ... } // unlimited
State
holdsnext: Approver