如何在 UML 类图中表示回调

2024-03-17

我有一个界面说

Interface ICallback {
    public void informFunction();
}

我有一堂课说:

Class Implementation implements ICallback {

   public Implementation() {
      new AnotherImplementation(this);
   }

   @override
   public void informFunction() {
      // do something
   }

}

现在考虑一个类,其中类实现的实例作为接口传递并用于进行回调。

Class AnotherImplementation {
   public ICallback mCallback;

   public AnotherImplementation(ICallback callback) {
      mCallback = callback;
   }

   public void testFunction() {
     mCallback.informFunction();  // Callback
   }
}

现在我想知道如何设计 UML 类图。最重要的是,我需要知道如何表示 AnotherImplementation :: testFunction() 类中将发生的回调功能。


您的代码如以下类图所示:

它代表了类之间的关系:

  • Implementation实施ICallback
  • Implementation依赖于取决于AnotherImplementation(它在其构造函数中创建一个)
  • AnotherImplementation has a ICallback(名为 mCallback)

类图不代表方法功能。方法功能通过序列或协作图可视化。

在您的示例中,序列图为testFucntion()很简单:

请注意,Implementation类未显示在序列图中。发生这种情况是因为mCallback成员被声明为ICallback。它可以是任何实现ICallback界面。

我认为更有趣的问题是如何可视化触发回调的方法。你没有提到哪种方法Implementation称为testFunction() of AnotherImplementation,所以我猜这发生在构造函数内Implementation。我为此构造函数创建了以下序列图:

在这里你可以看到:

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

如何在 UML 类图中表示回调 的相关文章

随机推荐

  • DataGrid 的 CellEditingTemplate 和编辑模式下的焦点

    我在使用 WPFToolkit 时遇到问题DataGrid当定制色谱柱同时提供两者时CellTemplate and CellEditingTemplate 如果你看下面 你会看到我的编辑模板有一个CheckBox 从功能上来说一切都很好
  • Xcode 4 的隐藏功能

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 现在 Xcode 4 已正式发布 是时候跟进我之前的问题了 Xcode 的隐藏功能 https
  • WordPress API:添加/删除帖子上的标签

    我知道这似乎是一个简单的操作 但我找不到任何资源或文档来解释如何使用帖子 ID 以编程方式向帖子添加和删除标签 下面是我正在使用的示例 但它似乎覆盖了所有其他标签 function addTerm id tax term term id i
  • Bootstrap 3:防止模态内部的模态每次触发(hidden.bs.modal)

    我有一个模态位于另一个模态中 并且我设法使内部模态关闭而不影响另一个模态 问题是 当第二个模式关闭时 它会触发 hidden bs modal 事件本身和第一个模型
  • Android 模拟器不显示印地语字体

    我在模拟器上将语言环境更改为 hi IN 当我在模拟器上启动应用程序 甚至主屏幕 时 我看到的只是让人想起 我不知道如何渲染此字体 的框 任何关于为什么会发生这种情况以及如何消除这种情况的意见都是非常受欢迎的 我需要显示印地语字体以测试我的
  • 由于协议不匹配而阻止 iframe

    我正在尝试将值从父窗口发送到按钮上的框架click事件 但它在控制台上显示错误 未捕获的安全错误 阻止了具有来源的帧 http 本地主机 53838 http localhost 53838 访问来源为 null 的框架 请求访问的帧具有
  • 有一个用于反应本机选择器的占位符

    有没有办法在用户单击它之前显示反应本机选择器的占位符 我们的想法是有一个选择器显示 国籍 一旦您单击并选择您的国家 地区 它就会呈现该国家 地区 我想在不将 国籍 作为选择器中的可用选项的情况下执行此操作 将第一个孩子放置为
  • 在 WooCommerce 中的简短描述之前显示自定义产品字段

    在简短描述之前 我在 WooCommerce 中添加新字段时遇到问题 我在中使用了脚本functions php我的新自定义字段显示正确 但是 使用脚本时简短描述消失 新字段显示正常 我可以编辑产品页面上字段的内容 但无法删除它 它始终是最
  • Ubuntu 10.1下如何识别多个USB串口适配器

    我正在 Ubuntu 10 1 下从多个相同的 USB 串行适配器读取数据 有时 它们的 dev tty 路径会发生变化 例如 如果在启动时连接了其他 USB 设备 我需要一种通过任何此类更改重复引用同一适配器的方法 据 udevadm 称
  • XInclude 的替代方案

    据我所知没有支持XInclude在 net中 我想利用同样的机制来分层组织 XML 配置文件 我的意思是我有一个引用特定 Xml 文件的顶级 XML 配置文件 我的配置是专用于一个特定模块的一组配置 我该怎么办呢 或者也许为什么我不应该这样
  • 如何在 Azure DevOps 中为 Node.js Web 应用创建发布管道?

    我想通过创建发布管道 在 Azure DevOps 上启用 Node js 应用程序的持续部署 我怎样才能做到这一点 当我写一年前的答案时 Azure DevOps 没有用于构建管道的 Web 应用程序部署任务 因此必须使用发布管道来完成
  • Rebol 中的“reword”功能是什么以及如何使用它?

    我看到有人提到reword今天可以使用 但是它的文档非常简短 它看起来像 shell 脚本环境变量替换 或者可能是正则表达式替换 但有所不同 我该如何使用这个功能以及我会遇到什么样的问题 这里有龙 The rewordfunction 是一
  • 限制 top 命令仅在命令行上显示前 X 个进程 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我不确定为什么没有选项top命令执行此操作 因为这似乎是一个自然的请求 如果我通过管道输出top to head 然后列表不会更新 并且我
  • 在 Twitter 上分享时 GIF 没有动画

    我正在创建动画 GIF 文件NSArray of UIImage 并将其保存在NSDocumentDirectory以及 iPhone 相册中 我面临的问题是 当我在电子邮件编辑器或 iMessage 中打开保存的 GIF 时 它的动画效果
  • 'str = new String(bytes, "UTF8") ' 和 'bytes = str.getBytes("UTF8")' 中的字节值不同

    我可以看到它们与我创建字符串所用的字节不同 我使用 AES CBC PKCS5Padding 来获取字符串 public static void main String args try int randomNumber CNStation
  • python-qgis版本信息

    有人可以告诉我如何获取版本信息python qgis http docs qgis org testing en docs pyqgis developer cookbook intro html 我已经尝试了所有常规方法foo versi
  • 在 Heroku 上部署 PeerJS 服务器

    我的 PeerJS 服务器有问题 我从这里使用了 部署到 Heroku 按钮 https github com peers peerjs server https github com peers peerjs server 我不知道如何连
  • 如何在Python中导入matplotlib

    我是Python新手 正在研究一个图形问题 我想绘制这个图形以更好地理解它 我了解到应该为此导入 matplotlib 模块 但我不知道如何将其添加到项目中 我是一名 java 开发人员 这非常类似于将 jar 添加到类路径中 当我尝试做时
  • Log4j2 模拟 Appender

    我有一堂课 其中我获取了所有属性 并在登录之前隐藏了它们的密码 Override public void afterPropertiesSet throws Exception Properties loadedProperties thi
  • 如何在 UML 类图中表示回调

    我有一个界面说 Interface ICallback public void informFunction 我有一堂课说 Class Implementation implements ICallback public Implement