利用回调机制:设计 咨询类 包含方法提供咨询,根据咨询者的提问给出答案:咨询者类,提出问题给咨询类,显示答案。
时间: 2024-10-08 14:06:32 浏览: 28
20210415-中信建投-交通运输行业:集运短期回调不改全年趋势.pdf
利用回调机制设计咨询类和咨询者类的流程通常是这样的:
**1. 咨询类(Consultant)**:
这是一个负责处理和响应特定问题的服务类。它包含一个方法,比如`askQuestion()`,这个方法接受一个问题作为输入参数,并有一个回调函数`onAnswerCallback(answer)`的参数。当咨询者提出问题后,咨询类会在找到答案后通过回调函数传递结果。
```java
public class Consultant {
public void askQuestion(String question, AnswerCallback callback) {
// 实现查找答案的过程...
String answer = findAnswer(question);
callback.onAnswerReceived(answer);
}
private String findAnswer(String question) { /* 答案查找逻辑 */ }
}
```
**2. 咨询者类(Client)**:
咨询者类是一个需要获取信息的对象,它创建了一个`Consultant`实例并调用其`askQuestion()`方法。当`Consultant`找到答案后,会通过客户端提供的`AnswerCallback`回调方法返回答案。
```java
public interface AnswerCallback {
void onAnswerReceived(String answer);
}
public class Client {
private final Consultant consultant;
public Client() {
this.consultant = new Consultant();
}
public void seekAnswer(String question) {
consultant.askQuestion(question, new AnswerCallback() {
@Override
public void onAnswerReceived(String answer) {
displayAnswer(answer);
}
});
}
private void displayAnswer(String answer) {
System.out.println("答案是:" + answer);
}
}
```
**相关问题--:**
1. 回调机制在什么场景下特别有用?
2. 除了`askQuestion()`方法,咨询类还可以有哪些其他功能?
3. 如果咨询服务需要处理并发请求,如何改进这个设计?
阅读全文