//这个例子不是很好。 //Hand*er interface RequestHandle { void handleRequest(Request request); } //ConcreteHandler class HRRequestHandle implements RequestHandle { public void handleRequest(Request request) { if (request instanceof DimissionRequest) { System.out.println("要离职, 人事审批!"); } System.out.println("请求完成"); } } class PMRequestHandle implements RequestHandle { RequestHandle rh; public PMRequestHandle(RequestHandle rh) { this.rh = rh; } public void handleRequest(Request request) { if (request instanceof AddMoneyRequest) { System.out.println("要加薪, 项目经理审批!"); } else { rh.handleRequest(request); } } } class TLRequestHandle implements RequestHandle { RequestHandle rh; public TLRequestHandle(RequestHandle rh) { this.rh = rh; } public void handleRequest(Request request) { if (request instanceof LeaveRequest) { System.out.println("要请假, 项目组长审批!"); } else { rh.handleRequest(request); } } } public class DF13_CHAIN{ public static void main(String[] args) { RequestHandle hr =new HRRequestHandle(); RequestHandle pm = new PMRequestHandle(hr); RequestHandle tl = new TLRequestHandle(pm); //team leader处理离职请求 Request request = new DimissionRequest(); tl.handleRequest(request); System.out.println("==========="); //team leader处理加薪请求 request = new AddMoneyRequest(); tl.handleRequest(request); System.out.println("========"); //项目经理上理辞职请求 request = new DimissionRequest(); pm.handleRequest(request); } }