动态方法调度

2023-11-30

网上有很多关于动态调度的信息,我感觉自己像个胆小鬼,因为我无法实现它。请帮我。这就是我正在尝试做的事情。

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 */

}

所以,我得到一个字符串'test' in myTest方法。我想创建一个ClassC延伸ClassB并编写一个方法来验证返回的字符串myTest该步骤之后不久(a.getResponse()).

如果没有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);
    }
}

这里有一个新的Dispatcher可以使用设置setDispatcher(Dispatcher)方法。该调度程序将用于myTest发送结果a.getResponse().

扩展类只需要设置具体的实现即可Dispatcher。 F.e.要打印对控制台的响应,您可以实现ConsoleDispatcher像这样:

public class ConsoleDispatcher implements Dispatcher
{
    public void dispatch(String message)
    {
        System.out.println(message);
    }
}

要使用ConsoleDispatcher而不是NullDispatcher in ClassC您可以使用类似于以下的代码:

public class ClassC extends ClassB
{
    public ClassC()
    {
        this.setDispatcher(new ConsoleDispatcher());
    }
}

随着 ClassC 扩展 ClassB,您将可以访问myTest它使用定义的调度程序来相应地调度消息。

HTH

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态方法调度 的相关文章

随机推荐

  • 在 primefaces 中绑定文件下载参数

    我想在 primefaces 中下载一个名称可能不同的文件 这是控制器的代码 ManagedBean name fileDownloadController eager true ViewScoped public class FileDo
  • 如何在不刷新整个页面的情况下重新加载DIV内容

    我只想用我得到的内容替换 DIV 内容 当我使用ajax向服务器发出get请求后 ajax type GET url http 127 0 0 1 8000 result age ageData occasion occasionData
  • 如何在仅支持常量表达式的函数中使用变量作为参数

    我正在使用这个功能 delay cycles var 我收到以下错误 论证到 delay cycles必须是常量表达式 很公平 但我怎样才能绕过这个呢 我每次都必须以不同的值延迟我的程序 我从 RS232 接收数据并将其存储在一个int多变
  • Python lambda函数下划线冒号语法解释?

    在以下 Python 脚本中 其中 aDict 是字典 0 在 lambda 函数中起什么作用 sorted aDict items key lambda 0 让我们把它分开 1 假设你有一个字典 di di one 1 two 2 thr
  • 如何判断会话是否处于活动状态? [复制]

    这个问题在这里已经有答案了 根据请求 您可以通过几种不同的方式来判断会话是否已启动 例如 isSessionActive session id Or isSessionActive defined SID 然而 如果您启动一个会话然后关闭它
  • Xamarin WKWebView 和 Cookie

    我有一个 Xamarin Forms 应用程序 它使用 cookie 来跟踪登录状态并同时使用 HTTPRequest 和 Webview 因此两者都需要共享 cookie 对于 UIWebView 这些 cookie 是共享的 无需我进行
  • cpuid命令显示信息的问题

    的信息llc缓存显示使用cpuid command在Linux上是 cache 3 cache type unified cache 3 cache level 0x3 3 self initializing cache level tru
  • Android NDK 中缺少 std::wstring 支持的解决方案?

    我有一个游戏 它在数千个地方使用 std wstring 作为其基本字符串类型 并使用 wchar t 及其函数进行操作 wcsicmp wcslen vsprintf 等 问题是 R5c 撰写本文时的最新 ndk 不支持 wstring
  • 值和引用类型混淆

    我在每个关于这个主题的网站上都读过 并且在过去几天里阅读了 Jon Skeets 的文章参考文献和值 and 参数传递 我了解这两种类型的概念 它们代表什么以及值和参考参数的区别是什么是另一个规范 我了解它的工作原理以及如何使用它 但我不明
  • Android 清单将支持 Galaxy S4、HTC One

    我正在尝试创建 Android 清单谷歌游戏将显示三星 Galaxy S4 HTC One 等 因为当前的设备未在兼容设备列表中列出 我确实搜索了 Stack Overflow 但这里的所有建议都没有帮助我 以下是我用于我们的应用程序的清单
  • AVAudioPlayer Swift 3 不播放声音[重复]

    这个问题在这里已经有答案了 我将 AVFoundation framework 添加到我的项目中 在我的项目导航器中 我添加了文件 Horn mp3 这是一个 1 秒的声音 当按下按钮 带有喇叭图像 时 应该播放声音 标签也应该更改其文本
  • 使用相对路径复制文件

    我想将某种类型的所有文件从某个子目录及其相对路径从该子目录复制到另一个目录 并且相对路径保持不变 例如 源子目录 c temp sourcedirectory 源文件 c temp sourcedirectory tonymontana f
  • “尝试附加自动命名数据库”错误

    我正在 Windows XP SP2 Professional 上使用 C Visual Studio 2010 制作桌面应用程序 如果我直接从发布的文件夹运行该应用程序而不运行安装程序或从调试文件夹运行它或只是调试该应用程序 它不会给出此
  • 使用 json 数据异步填充 AngularJS ngTable

    我正在尝试构建一个 AngularJS 应用程序 它输出一个用 json 填充的 HTML 表 该 表的 HTML 位于这个问题的底部 我在用着application json我从服务器检索的数据 当我做一个简单的curl http myu
  • 创建ipa以分发给客户端

    我想知道当我们可以轻松地压缩构建的应用程序并分发压缩的 app 文件时 创建 ipa 并将其分发给客户端进行测试有什么用 创建有什么好处 ipa 是不是创造了ipa不需要移动配置文件 请澄清我的疑问 我会告诉你我的经验的一个优点 当您向客户
  • 如何自定义 JSONSchema 的错误消息?

    有没有办法根据给定的条件提供自定义错误消息 我在用着https github com networknt json schema validator 版本1 0 43 这是我的 JSON 架构 id https configurations
  • 异常过滤器之外的异常处理?

    使用 Asp net WebApi RC 如何捕获未捕获的错误异常过滤器 or Application Error 在全局 asax 中 有了这两个条件 似乎还有一类例外情况尚未涵盖 例如 ApiControllerActionSelect
  • 如何将 1970 年以来的秒数转换为 C++ 中的 DateTime?

    如何将 1970 年以来的秒数转换为 C 中的 DateTime 我得到的时间格式如下 1296575549 573352 冒号的左侧部分以秒为单位 右侧部分以微秒为单位 请帮忙 Thanks Syd 尝试使用 gmtime 参见http
  • hcmap 与 R Shiny 中的本地文件 javascript

    我正在shiny ui和服务器 上开发一个应用程序 我想用Highchart包的hcmap函数实现一个地图 但是 在实现地图时 我发现函数 hcmap 与站点存在依赖关系 https code highcharts com mapdata
  • 动态方法调度

    网上有很多关于动态调度的信息 我感觉自己像个胆小鬼 因为我无法实现它 请帮我 这就是我正在尝试做的事情 ClassA public void createReq public String postReq ClassB Test publi