知识卡片

一个案例中隐藏的模板方法与迭代器模式

普通读书笔记卡 · 1870.b.9.c

内容

[[命令模式作为责任链模式排头兵组成命令链框架]]这类案例常叠加不止两模式。UNIX 模拟器还隐藏:模板方法模式——handleMessage()固定”判断参数是否归自己处理,是则echo, 否则转下一节点”骨架,基本方法留给具体子类实现;迭代器模式—— for(Class c:classes)这种for-each依赖迭代器模式,只是JDK已内建进语法。发散:识别 真实代码用了哪些模式,不能只看故事讲的是哪个模式。

参考来源

- 位置:《设计模式之禅(第2版)》第34章《命令模式+责任链模式》34.2节(源文件:_epub-src/text/part0152.html) - 结论依据:原文在混编小结中说明"在Command类以及子类中,buildChain方法是模板方法……在责任链模式的CommandName类中,用了一个典型的模板方法handlerMessage,它调用了基本方法,基本方法由各个实现类实现……在for循环中我们多次用到类似for(Class c:classes)的结构,是谁来支撑该方法运行?当然是迭代器模式,只是JDK已经把它融入到了API中"。 - 原始内容:模板方法模式……在Command类以及子类中,buildChain方法是模板方法,只是没有基本方法而已;在责任链模式的CommandName类中,用了一个典型的模板方法handlerMessage,它调用了基本方法……迭代器模式……在for循环中我们多次用到类似for(Class c:classes)的结构,是谁来支撑该方法运行?当然是迭代器模式,只是JDK已经把它融入到了API中,更方便使用了。