责任链模式(Chain of Responsibility)

2019-05-28  本文已影响0人  gbmaotai

模型

输入:Request
处理:Handler =>Handler => Handler的Chain
目的:输入和处理解耦

客户: 只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递。
链: 1.链上的处理,某一节点可以处理完退出,不往下传递
2.可以多个链拼接
3.可以增加删除节点,扩展方便

实例

Key(input event) 的处理

按键或其他Input Event 在接受到之后会一层层向上传递,直到可以处理

InputStage syntheticStage = new SyntheticInputStage();
InputStage viewPostImeStage = new ViewPostImeInputStage(syntheticStage);
InputStage nativePostImeStage = new NativePostImeInputStage(viewPostImeStage,
                        "aq:native-post-ime:" + counterSuffix);
InputStage earlyPostImeStage = new EarlyPostImeInputStage(nativePostImeStage);
InputStage imeStage = new ImeInputStage(earlyPostImeStage,
                        "aq:ime:" + counterSuffix);
InputStage viewPreImeStage = new ViewPreImeInputStage(imeStage);
                InputStage nativePreImeStage = new NativePreImeInputStage(viewPreImeStage,
                        "aq:native-pre-ime:" + counterSuffix);

mFirstInputStage = nativePreImeStage;
mFirstPostImeInputStage = earlyPostImeStage;
servlet 中过滤器Filter

实现一个Filter, FilterChain

public void doFilter(ServletRequest request, ServletResponse response) 
上一篇 下一篇

猜你喜欢

热点阅读