58,454
社区成员
发帖
与我相关
我的任务
分享
package com.netpowerapps.designpatterm;
/**
* 客户端测试类
* @author md313
*
*/
public class TestClient {
public static void main(String[] args) {
//人啊,总是被各种问题所困扰,这不,今天楼主被interface的问题所困扰,作为一个对interface有疑问的提问者,到CSDN上求指点来了
Askable louzhu = new InterfaceAsker();
//楼主就“interface的作用”进行提问
Question q = louzhu.ask("interface的作用是什么?");
//CSDN上热心的我们出现了,不过林子大了,什么样的niao都有,不管是什么niao,只要能解答问题的niao都行。来了个偏懒的解答者
Answerable we = new LazyAnswerPerson();
//懒niao是一个可以解答问题的人,当然可以回答louzhu提出的问题咯
we.answer(q);
//我们中又来了一个解答者,这位解答者是个比较勤快点儿的niao,虽然解答得不是很好,但还是通过自己一番勤奋后针对louzhu的问题给出了自己的解答
we = new DiligentAnswerPerson();
//勤快niao也是一个可以解答问题的人,解答就是了
we.answer(q);
/*
* 又来一个解答者 we = new XXXAnswerPersion();
* 解答者解答louzhu的问题
* we.answer(q);
*
* ....经过多个解答者的解答后,louzhu的问题解决了,知道了interface有xxxx这么个作用
*
*/
/*
* 过了几天,楼主对inner class又有疑问了,于是,
* louzhu = new InnerClassAsker();
* q = louzhu.ask("什么是inner class?");
*
* 于是乎,又有一群热心的we前来解答问题
* we = new XXXAnswerPerson();
* we.answer(q);
*/
}
}
/**
* 提问者借口,负责提出问题
* @author md313
*
*/
public interface Askable {
/**
* 提出问题
* @param strQuestion 问题的描述
* @return 针对问题的描述构建一个问题对象
*/
public Question ask(String strQuestion);
}
/**
* 对interface有问题要问的人
* @author md313
*
*/
public class InterfaceAsker implements Askable {
@Override
public Question ask(String strQuestion) {
System.out.println(strQuestion + " 问题还是没搞明白,去CSDN上提问吧!");
return new Question(strQuestion);
}
}
/**
* 回答者接口,负责回答问题
* @author md313
*
*/
public interface Answerable {
/**
* 回答一个问题
* @param q 待回答的问题
*/
public void answer(Question q);
}
/**
* 偏懒的解答者
* @author md313
*
*/
public class LazyAnswerPerson implements Answerable {
@Override
public void answer(Question q) {
System.out.println("对于:\"" + q.getStrQuestion() + "\"这个问题,请参考这个链接:http://www.xxxx.com/yyyy?id=n");
}
}
/**
* 勤奋点儿的解答者
* @author md313
*
*/
public class DiligentAnswerPerson implements Answerable{
@Override
public void answer(Question q) {
System.out.println("针对:\"" + q.getStrQuestion() + "\"这个问题,我的看法是这样的XXXXXX,为了让你更明白,特地花了点时间写了如下代码111110000111...");
}
}
/**
* 表示问题的类
* @author md313
*
*/
public class Question {
private String strQuestion;
public Question(String strQuestion) {
super();
this.strQuestion = strQuestion;
}
public String getStrQuestion() {
return strQuestion;
}
public void setStrQuestion(String strQuestion) {
this.strQuestion = strQuestion;
}
}