首页 / JAVA / java-动态方法分派
java-动态方法分派
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-动态方法分派,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1953字,纯文字阅读大概需要3分钟。
内容图文
![java-动态方法分派](/upload/InfoBanner/zyjiaocheng/690/7e67507b4b134535ab295491e81d1128.jpg)
互联网上有很多有关动态调度的信息,我感觉自己像鸡,因为我无法实现它.请帮我.这是我想要做的.
ClassA{
public void createReq(){
}
public String postReq(){
}
}
ClassB{
@Test
public void myTest(){
Class A = new ClassA();
a.createReq();
String test = a.getResponse();
/* Not sure how do i do this part */
}
因此,我在myTest方法中得到了一个字符串“ test”.我想创建一个扩展ClassB的ClassC,并编写一种方法来验证在步骤(a.getResponse())之后不久在myTest中返回的字符串.
如果没有实现ClassC,我只想简单地结束测试.如果仅存在ClassC并实现了一种验证方法,我希望完成验证.
我该怎么做呢?请帮忙.谢谢.
解决方法:
您可以创建一个Dispatcher接口,该接口仅定义方法dispatch(String)(或尝试实现的任何方法).基类(ClassB)使用NullPattern实现接口,而子类(ClassC)根据您的需要实现接口.
界面非常简单:
public interface Dispatcher
{
public void dispatch(String message);
}
NullPattern的实现如下:
public class NullDispatcher implements Dispatcher
{
public void dispatch(String message)
{
// do nothing
}
}
ClassB应该这样修改:
public class ClassB
{
private Dispatcher dispatcher;
public ClassB()
{
dispatcher = new NullDispatcher();
}
public void setDispatcher(Dispatcher dispatcher)
{
// change this to your needs
if (dispatcher == null)
dispatcher = new NullDispatcher();
else
this.dispatcher = dispatcher;
}
@Test
public void myTest()
{
ClassA a = new ClassA();
a.createRequest();
String test = a.getResponse();
dispatcher.dispatch(test);
}
}
在这里可以使用setDispatcher(Dispatcher)方法设置新的Dispatcher.该分派器将在myTest中用于分派a.getResponse()的结果.
扩展类仅需要设置Dispatcher的特定实现. F.E.要打印对控制台的响应,您可以实现一个ConsoleDispatcher,如下所示:
public class ConsoleDispatcher implements Dispatcher
{
public void dispatch(String message)
{
System.out.println(message);
}
}
要在ClassC中使用ConsoleDispatcher而不是NullDispatcher,您可以使用类似于以下代码:
public class ClassC extends ClassB
{
public ClassC()
{
this.setDispatcher(new ConsoleDispatcher());
}
}
随着ClassC扩展ClassB,您将可以访问myTest,后者使用已定义的调度程序来相应地调度消息.
HTH
内容总结
以上是互联网集市为您收集整理的java-动态方法分派全部内容,希望文章能够帮你解决java-动态方法分派所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。