责任链模式
发布时间:2020-12-14 04:41:51 所属栏目:大数据 来源:网络整理
导读:一、模式名 责任链模式, Chain of Responsibility 二、解决的问题 责任链模式,类似于“踢皮球”,在日常生活中,我们经常可以看到“踢皮球”现象,比如去政府办事,可能需要找几个部门,才能解决问题,因为他们都会告诉你,他们不负责这个事,需要找谁谁谁
一、模式名 责任链模式, Chain of Responsibility 二、解决的问题 责任链模式,类似于“踢皮球”,在日常生活中,我们经常可以看到“踢皮球”现象,比如去政府办事,可能需要找几个部门,才能解决问题,因为他们都会告诉你,他们不负责这个事,需要找谁谁谁的,这种现象就是责任链模式。 责任链模式的优点是解耦请求方和处理方,能让请求方和处理方都成为灵活可扩展的组件。 三、解决方案 责任链模式的UML图如下所示 实例代码如下: public class ChainOfResponsibilityExer { public static void main(String[] args) throws Exception { VerifyHandler nullHandler = new NullHandler("123"); LengthHandler lengthHandler = new LengthHandler("122334"); nullHandler.setNext(lengthHandler); nullHandler.execute(); } } abstract class VerifyHandler { private VerifyHandler next; private String value; public VerifyHandler(String value) { this.value = value; } public String getValue() { return value; } public VerifyHandler setNext(VerifyHandler next) { this.next = next; return this.next; } public VerifyHandler getNext() { return next; } void execute() throws Exception { handle(); if (next != null) { next.handle(); } } abstract void handle() throws Exception; } class NullHandler extends VerifyHandler { public NullHandler(String val) { super(val); }
@Override
void handle() throws Exception { if (getValue() == null) { throw new Exception("null"); } } } class LengthHandler extends VerifyHandler { public LengthHandler(String val) { super(val); } ? @Override
void handle() throws Exception { if (getValue().length() > 5) { throw new Exception("too long"); } } }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |