安居多伦多
  • 多市生活
    • 多市生活
    • 加国税务
    • 旅游度假
    • 生活安全
    • 行车安全
    • 窍门集锦
  • 多市书苑
    • 热门
    • 小说
    • 教育
  • 家居信息
    • 家居信息
    • 房屋保养
    • 房屋贷款
    • 房屋租赁
    • 房屋建筑
    • 房前屋后
    • 家居风水
  • 健康保健
    • 健康保健
    • 饮食起居
    • 食品安全
    • 健身锻炼
  • 书苑账户
    • 书苑登入
    • 书苑注册
    • 忘记书苑密码
    • 书苑账户信息
    • 关于我们
    • 联系我们
    • 隐私政策
多伦多书苑
在线书籍:随时阅读,随身听书。
所有书籍 | 人文 | 人物 | 人生 | 健康 | 儿童 | 医学 | 历史 | 历史 | 古典 | 哲学宗教 | 商业 | 外国 | 寓言 | 小说 | 教育 | 风水 | 管理 | 语言 |
为使本公益资源网站能继续提供免费阅读,请勿屏蔽广告。谢谢!报告弹出广告被滥用。
  1. 安居多伦多
  2. 网上书苑
  3. IT
  4. 设计模式之禅

设计模式之禅

2021-08-04 1人点赞 0条评论
点赞
x
语速1.0: 2.0
进度0:

上一页   |   返回目录   |   下一页

本书仅供会员,测试期间不限,赶快看。

34.2 混编小结

在这里的例子中用到了以下模式。

● 责任链模式

负责对命令的参数进行解析,而且所有的扩展都是增加链数量和节点,不涉及原有的代码变更。

● 命令模式

负责命令的分发,把适当的命令分发到指定的链上。

● 模板方法模式

在Command类以及子类中,buildChain方法是模板方法,只是没有基本方法而已;在责任链模式的CommandName类中,用了一个典型的模板方法handlerMessage,它调用了基本方法,基本方法由各个实现类实现,非常有利于扩展。

● 迭代器模式

在for循环中我们多次用到类似for(Class c:classes)的结构,是谁来支撑该方法运行?当然是迭代器模式,只是JDK已经把它融入到了API中,更方便使用了。

可能读者已经注意到了,"ls-l-a"这样的组合选项还没有处理。确实没有处理,以下提供两个思路来处理。

● 独立处理

"ls-l-a"等同于"ls-la",也等同于"ls-al"命令,可以把"ls-la"中的选项"la"作为一个参数来进行处理,扩展一个类就可以了。该方法的缺点是类膨胀得太大,但是简单。

● 混合处理

修正命令族处理链,每个命令处理节点运行完毕后,继续由后续节点处理,最终由Command类组装结果,根据每个节点的处理结果,组合后生成完整的返回信息,如"ls-l-a"就应该是LS_L类与LS_A类两者返回值组装的结果,当然链上的节点返回值就要放在Collection类型中了。

该框架还有一个名称,叫做命令链(Chain of Command)模式,具体来说就是命令模式作为责任链模式的排头兵,由命令模式分发具体的消息到责任链模式。对于该框架,读者可以继续扩展下去。当然,上面的程序还可以优化,优化的结果就是Command类缩为一个类,通过CommandEnum配置文件类传递命令,这比较容易实现,读者可以自行设计。

上一页   |   返回目录   |   下一页

类似书籍

数学之美和浪潮之巅
数学之美和浪潮之巅
人月神话
人月神话
SEO教程:搜索引擎优化入门与进阶(第3版)
SEO教程:搜索引擎优化入门与进阶(第3版)
设计冲刺:谷歌风投如何5天完成产品迭代
设计冲刺:谷歌风投如何5天完成产品迭代
Author:

标签: 暂无
最后更新:2021-08-04
< 上一篇
下一篇 >

本书评论

取消回复

©2021 安居多伦多 - 版权所有

本站由 好事来 Hostlike.com 提供技术支持。