【设计模式】职责链模式设计在线文档帮助系统

职责链模式设计在线文档帮助系统

任务三:使用职责链模式设计在线文档帮助系统

某公司欲开发一个软件系统的在线文档帮助系统,用户可以在任何一个查询环境中输入查询关键字,如果当前查询环境下没有相关内容,则系统会将查询按照一定的顺序转发给其他查询环境。基于上述需求,采用职责链模式对该系统进行设计。

cclass

7

1

java 复制代码
public abstract class SearchContext {
    protected SearchContext successor;
    public void setSuccessor(SearchContext successor){
        this.successor = successor;
    }
    public abstract void search(String keyword);
}

2

java 复制代码
public class JavaSearchContext extends SearchContext {
    @Override
    public void search(String keyword) {
        //模拟实现
        if(keyword.contains("Java")){
            System.out.println("查询关键字Java!");
        }
        else{
            try{
                successor.search(keyword);
            }catch(NullPointerException e){
                System.out.println("未匹配到查询字段!");
            }
        }
    }
}

3

java 复制代码
class SQLSearchContext extends SearchContext{

    @Override
    public void search(String keyword) {
        //模拟实现
        if(keyword.contains("SQL")){
            System.out.println("查询关键字SQL!");
        }
        else{
            try{
                successor.search(keyword);
            }catch(NullPointerException e){
                System.out.println("未匹配到查询字段!");
            }
        }
    }
}

4

java 复制代码
class UMLSearchContext extends SearchContext{

    @Override
    public void search(String keyword) {
        //模拟实现
        if(keyword.contains("UML")){
            System.out.println("查询关键字UML!!!");
        }
        else{
            try{
                successor.search(keyword);
            }catch(NullPointerException e){
                System.out.println("未匹配到查询字段!");
            }
        }
    }
}

5

java 复制代码
public class Mian {

    public static void main(String[] args) {
        String keyword = "UML类图绘制疑惑";

        SearchContext jContext, sContext, uContext;
        jContext = new JavaSearchContext();
        sContext = new SQLSearchContext();
        uContext = new UMLSearchContext();
        jContext.setSuccessor(sContext);
        sContext.setSuccessor(uContext);

        jContext.search(keyword);
        keyword = "SQL语句疑惑";
        jContext.search(keyword);
        keyword = "Java语法疑惑";
        jContext.search(keyword);
        keyword = "各种疑惑";
        jContext.search(keyword);
    }

}
相关推荐
在路上`13 小时前
前端学习之后端java小白(三)-sql外键约束一对多
java·前端·学习
dazhong201213 小时前
Spring Boot 项目新增 Module 完整指南
java·spring boot·后端
xrkhy13 小时前
SpringBoot之日志处理(logback和AOP记录操作日志)
java·spring boot·logback
搬山境KL攻城狮13 小时前
MacBook logback日志输出到绝对路径
java·intellij-idea·logback
yb0os113 小时前
RPC实战和核心原理学习(一)----基础
java·开发语言·网络·数据结构·学习·计算机·rpc
liuyao_xianhui13 小时前
内存管理(C/C++)
java·开发语言·c++
superlls14 小时前
(设计模式)区分建造者、 规格模式(MyBatis Example+Criteria )
java·tomcat
Buling_014 小时前
游戏中的设计模式——第三篇 简单工厂模式
游戏·设计模式·简单工厂模式
饭碗的彼岸one14 小时前
C++设计模式之单例模式
c语言·开发语言·c++·单例模式·设计模式·饿汉模式·懒汉模式
kimble_xia@oracle14 小时前
SQL 笔记
java·数据库·oracle