行为模式之职责链模式(在线文档帮助系统)
2015-11-26 00:02
477 查看
题目:某公司欲开发一个软件系统的在线文档帮助系统,用户可以在任何一个查询环境中输入查询关键字,如果当前查询环境下没有相关内容,则系统会将查询按照一定的顺序转发给其他查询环境。设查询环境如下:JavaSearchContext、SQLSearchContext、UMLSearchContext。
类图
Eclipse运行效果图
类图
package 职责链模式实例之在线文档帮助系统; public class Client { public static void main(String[] args) { SearchContext objJava,objSQL,objUML; objJava = new JavaSearchContext(); objSQL = new SQLSearchContext(); objUML = new UMLSearchContext(); objJava.setSuccessor(objSQL); objSQL.setSuccessor(objUML); SearchKey key1 = new SearchKey("java"); objJava.handleRequest(key1); SearchKey key2 = new SearchKey("sql"); objSQL.handleRequest(key2); SearchKey key3 = new SearchKey("uml"); objUML.handleRequest(key3); } }
package 职责链模式实例之在线文档帮助系统; public abstract class SearchContext { protected SearchContext successor; public void setSuccessor(SearchContext successor) { this.successor = successor; } public abstract void handleRequest(SearchKey key); }
package 职责链模式实例之在线文档帮助系统; public class JavaSearchContext extends SearchContext{ public void handleRequest(SearchKey key) { String key1 = "java"; if(key1.equals(key.getKey())) System.out.println("在JavaSearchContext中找到了"); else if(this.successor != null) this.successor.handleRequest(key); } }
package 职责链模式实例之在线文档帮助系统; public class SQLSearchContext extends SearchContext{ public void handleRequest(SearchKey key) { String key1 = "sql"; if(key1.equals(key.getKey())) System.out.println("在SQLSearchContext中找到了"); else if(this.successor != null) this.successor.handleRequest(key); } }
package 职责链模式实例之在线文档帮助系统; public class UMLSearchContext extends SearchContext{ public void handleRequest(SearchKey key) { String key1 = "uml"; if(key1.equals(key.getKey())) System.out.println("在UMLSearchContext中找到了"); else if(this.successor != null) this.successor.handleRequest(key); } }
Eclipse运行效果图
相关文章推荐
- jQuery对象复制
- 数字证书简介及Java编码实现
- 内存泄露从入门到精通三部曲之常见原因与用户实践
- PHP如何写扩展
- ios 音频后台播放
- 挑战独立开发项目能力___ITlanbao
- vim
- python-29:多级页面爬取源码
- 指定元素倒叙输出
- 指定某个元素和某个元素互换
- 怎么恢复损坏后U盘中的数据
- Xcode自带的instrument中的Automation实现自动化测试简单使用
- [教程]轻量级文本数据交换格式:JSON
- 稀疏矩阵的十字链表存储
- 零售进销存选型需要考虑哪些方面?
- Bugtags,产品经理的瑞士军刀
- java 面试专题(二)String StringBuffer StringBuilder的区别
- linux+nginx搭建server与client通过证书双向认证环境
- 如何在CentOS配置Apache的HTTPS服务
- 如何判断Linux是32位还是64位