知识卡片

硬编码条件判断分发请求的四个问题

普通读书笔记卡 · 1988

内容

“三从四德”场景最初用if…else根据女性状态判断该调用父亲、丈夫还是儿子处理,暴露四个 问题:职责界定不清晰(判断逻辑该属于处理者却被调用方组装);代码臃肿(角色增加分支就多 一层);耦合过重(新增处理类型要改Client,违反开闭原则);异常情况欠考虑(请求发错角色 无转发机制)。发散:这四个问题的根因是”谁该处理什么”这个决策放在了错误位置,责任链模式 把决策权下放给处理者自己。

参考来源

- 位置:《设计模式之禅(第2版)》第16章《责任链模式》(源文件:_epub-src/text/part0072.html) - 结论依据:原文逐条列出初版实现的四个问题:职责界定不清晰、代码臃肿、耦合过重、异常情况欠考虑,并各自举例说明具体表现。 - 原始内容:对女儿提出的请示,应该在父亲类中做出决定……原本应该是父亲这个类做的事情抛给了其他类进行处理……如果IHandler的实现类继续扩展怎么办?修改Client类?与开闭原则违背了!……妻子只能向丈夫请示吗?……我们的程序上可没有体现出来,逻辑失败了!