类之间的共享列表

时间:2014-09-24 10:01:54

标签: java object-oriented-analysis

我正处于下一个任务的设计阶段,我不确定我的想法是否正确,因为我不太确定如何在UML图中实现它。我很感激你对它的评论。

基本上,重点是我将有一个读者和一个作家类。它们将用于从/向某个数据源读取和写入值,即数据库或modbus PLC。这些值中的每一个都由我的数据模型和数据源中的唯一ID标识。将通过发送所有值并查询其值来定期对所有值执行读取操作。每当其中一个值在我的数据模型中发生更改并且需要将其发送到此数据源时,就会执行写入操作。

我的想法是为阅读器和包含我的数据模型中的所有对象的编写器提供共享列表。例如:

class ExternalObject {

    private String id;
    private String transactionId;
    private String value;
    private String lastValue;

}

将会有一个控制器类,当我的数据模型中的值发生变化时会将其写入正确对象的value属性中,那么Writer类将一直迭代遍历列表中的所有元素该值不为null并发送它。在此之后,它会将其重置为null并将其设置为lastValue。 此外,Reader类,即始终从此数据源读取值,当看到读取的值与lastValue不同时,它会将其保存在我的数据模型中。

到现在为止,我想你明白了。当没有与数据源连接或发送初始值或读取它们时,当然会有一些逻辑重置值,但这是另一回事。

我担心的是这个共享列表。我不确定在面向对象设计中是否可以共享列表或这样的对象。如果这很好,接下来就是我不知道如何在UML图中对它进行建模,以指示一个对象在两个类之间共享。

欢迎任何有关它的想法。

1 个答案:

答案 0 :(得分:0)

不幸的是,这不是一个完整的答案,因为我从来没有在行业级别实现过类似的东西,但会想到一些注意事项:

1)新ID:Reader轮询它知道的ID - 但是外部进程插入的新ID呢?

2)性能:你是否控制了架构,你的机器时钟是否在一定的合理范围内同步?如果是这样,也许你可以在每个对象上有一个时间戳,并且读者只能“刷新”自上次刷新后编辑/插入的对象(加上一些安全边距)?

3)列表:我不会说“面向对象禁止列表共享”,但为了您自己的方便,您可能会考虑使用包装器数据结构,以及搜索/更新/插入/删除的方法。因此,您可以轻松地随意替换数据结构,例如到地图。

4)交易:您如何处理这些数据源的交易?

无论如何,祝你好运