当一个请求需要被多个对象中的某一个处理时,可以用责任链模式
- interface Handler
- {
- virtual void handleRequest() = 0;
- };
- class ConcretHandler
- {
- virtual void handleRequest
- {
- if (canHandle())
- handleIt();
- else if (this->nextHandler != NULL)
- nextHandler->handleRequest();
- }
- };
这些具体的handler类构成一个链,当一个请求来到时,如果当前Handler可以处理则处理,否则把这个请求转给链中的下个handler处理。下个handler也以同样的方式对待该请求。
对于客户而言,它只需要与链中的第一个handler交互,而并不需要知道它的请求最后真正是被哪个handler处理的。
阅读(1270) | 评论(0) | 转发(0) |