用于在运行时使用附加信息增强 Java 中现有数据结构的设计模式

2024-06-18

我将从一个小例子开始:

想象一个具有几个实体的应用程序。

实体A -1---n-> 实体B -1---n-> 实体C

假设我们有一个返回 EnityC 实例列表的服务方法。在 UI 中,我们想要显示 EntityC,但也向仅与 UI 相关的实体添加一些附加信息(可能是 css 类等)。解决此问题的常见方法是创建一个也可以携带附加信息的 EntityC 包装器。

public class EntityCWrapper implements EntityC, AdditionalInfo { ...}

或者可以使用传输对象作为简单的数据结构:

public EntityTO {
  public EntityC entity;
  public AdditionalInfo info;
}

但是,如果服务返回 EnitityA 实例的列表,并且我们需要将 AdditionalInfo 附加到实例图中的所有实体(包括 EntityB 和 EntityC 引用的实体实例),该怎么办?

有谁有想法或可以指出我适合这种情况的设计模式?


看看角色对象模式 http://hillside.net/plop/plop97/Proceedings/riehle.pdf.

它描述了如何使用不同的东西(称为角色)来扩展对象。 该模式更多地是关于如何添加业务逻辑(这就是它被称为角色的原因),但这个想法可能对您有帮助。

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

用于在运行时使用附加信息增强 Java 中现有数据结构的设计模式 的相关文章

随机推荐

  • Java泛型中类型参数的前向引用

    根据 Java 泛型常见问题解答http www angelikalanger com GenericsFAQ FAQSections TypeParameters html FAQ302 http www angelikalanger c
  • Matplotlib:绘制从x轴到点的线

    我有很多点正在尝试使用 matplotlib 进行绘制 对于每个点 a b 我想在 0 b 中为 Y 绘制直线 X a 知道如何做到这一点吗 Use a stem plot 最不麻烦的解决方案采用matplotlib pyplot stem
  • 让两种口味使用相同的sourceSet

    我有两种风格 demo 和 full 每种风格都有自己的源集在 src demo 和 src full 中 这很好用 我现在想做第三种使用这些源集之一的风格 我该怎么做呢 我尝试过类似的东西 productFlavors full appl
  • nodeJS + Swig 模板将变量传递给 javascript

    有没有办法使用nodeJS的express swig模板将变量从服务器端传递到客户端javascript 我知道这可以在 Jade 中完成 但我宁愿坚持使用更类似于 HTML 的模板引擎 感谢各位的帮助 好的 我假设您可以使用 consol
  • (Emacs) 文本是只读的?

    所以我在 emacs 中工作 突然 slime repl sbcl 说文本是只读的 嗯 这很好 因为现在我无法在其中输入任何内容 我该如何修复 缓冲区是只读的 可以通过以下方式解决C x C q但正如德鲁和菲尔斯所说 文本是只读的 是非常不
  • 获取当前操作和控制器并将其用作 Html.ActionLink 中的变量?

    我需要能够动态检索您所在页面的当前操作和控制器名称 并实际使用它们创建一个新的 HTML ActionLink 链接到相同的操作和控制器名称 但位于不同的区域 所以我想我需要检索当前操作和控制器名称作为变量以用于构建新的 HTML Acti
  • java ResultSet,使用MAX sql函数

    你好 这就是我想要的 我连接到数据库并检索 UniqueId 列的最大元素 并将其分配给名为 maxID 的整数变量 这是我的方法 int maxID 0 Statement s2 con createStatement s2 execut
  • 以给定的纵横比保存绘图

    我正在使用非常棒的库 ggplot2 我想出了如何使用设置绘图的纵横比coord fixed 现在 我想将绘图保存为具有指定宽度 例如 10 厘米 的 PDF 并计算所需的高度 我不知道如何实现这一目标 这可能吗 您可以使用网格函数来计算
  • 如何在 Java 8 中从 CompletableFuture> 获取结果

    Java 8 环境 同时使用 CompletableFuture allOf 运行任务 然后从每个线程获取每个结果 然后将所有结果组合成一个组合结果并返回它 在下面的代码中 要得到结果 List
  • ANTLR4 的最小示例 Gradle 项目(带有 antlr 插件)是什么?

    我创建了新的 Gradle 项目 添加了 apply plugin antlr and dependencies antlr org antlr antlr4 4 5 3 to build gradle Created src main a
  • 轨道上的下一个对象问题

    视频影像 表 id title votes count 视频影像 控制器 def show video Video find params id next video Video order votes count DESC where v
  • 如何使用 Gson 跳过空条目

    使用 Gson 反序列化 JSON 时 有没有办法跳过 JSON 数组中的空条目 text adsfsd title asdfsd null text adsfsd title asdfsd 生成的 List 有 3 个条目 第二个条目为空
  • 过滤条件的查询字符串与资源路径

    背景 我有2个资源 courses and professors A course具有以下属性 ID topic 学期号 年 部分 教授 id A professor具有以下属性 ID 学院 超级用户 名 姓 所以 你可以说一门课程有一位教
  • 如何通过 Activity 中的取消按钮强制 IntentService 立即停止?

    我有一个从 Activity 启动的 IntentService 我希望能够使用 Activity 中的 取消 按钮立即从 Activity 停止服务 一旦按下 取消 按钮 我希望服务停止执行代码行 我发现了很多与此类似的问题 即here
  • 在elasticSearch中查询时定义分析器

    我对 Elasticsearch 还很陌生 只需要一些说明 我们可以在查询搜索服务器时定义一个分析器吗 我尝试使用 文本 和 字段 查询 效果很好 Query curl XPOST http localhost 9200 test user
  • xgboost :base_score参数的含义

    在 xgboost 的文档中我读到 基本分数 default 0 5 所有的初始预测分数 实例 全局偏差 这句话的意思是什么 基本分数是数据集中感兴趣事件的先验概率吗 IE 在包含 1 000 个观察值 其中 300 个正值和 700 个负
  • 如何在MATLAB中显示由三个矩阵表示的图像?

    我有 3 个相同大小的 2D 矩阵 假设 200 行和 300 列 每个矩阵代表三种 基本 颜色 红色 绿色和蓝色 之一的值 矩阵的值可以在 0 到 255 之间 现在我想组合这些矩阵以将它们显示为彩色图像 200 x 300 像素 我怎样
  • 为什么我不应该在 android 中使用 System.out.println()

    In the Android开源项目的代码风格 http source android com source code style html 它指出我们不应该使用System out println 但我不明白为什么 谁能解释一下吗 我应该
  • 使用 PhpSpreadsheet PHP 设置单元格边框样式

    我使用 PhpSpreadsheet 来读取或写入 Excel 文件 我想向我的 Excel 添加边框样式 所以我使用了以下代码
  • 用于在运行时使用附加信息增强 Java 中现有数据结构的设计模式

    我将从一个小例子开始 想象一个具有几个实体的应用程序 实体A 1 n gt 实体B 1 n gt 实体C 假设我们有一个返回 EnityC 实例列表的服务方法 在 UI 中 我们想要显示 EntityC 但也向仅与 UI 相关的实体添加一些