gpt4 book ai didi

java - OOP 设计用于从不同来源读取数据并将其发送到不同目的地的系统

转载 作者:行者123 更新时间:2023-12-02 04:41:12 24 4
gpt4 key购买 nike

我正在编写一个 Java 软件,它就像一个中间件,用于从不同来源收集数据,然后处理数据并将其发送到不同的目的地。

数据源和目的地包括:文件、数据库、TCP、HTTP。

用户将能够创建一个 channel ,每个 channel 将有一个数据源(文件读取器、数据库读取器、tcp 监听器)和一个或多个数据目的地(文件写入器、数据库写入器、tcp 发送器)。

channel diagram

该应用程序将按以下方式工作:

  • 从数据库中读取 channel 。
  • 为每个 channel 创建数据源及其目标。
  • 启动数据源以读取数据。

  • 我想到的是:
  • 源和目的地表示如下:
    enter image description here
  • channel 是一个容器,将由源和目标列表注入(inject)。所以 channel 就像 立面图案
  • channel 中的数据处理器将使用 连接到目的地。观察者模式
  • 在运行时,当应用程序从数据库加载 channel 列表时,我将使用 工厂模式创建源和目标。

  • 那么,这是表示 channel 、来源和目的地的最佳方式吗?我认为源和目标有相似之处,例如,FileReader 和 FileWriter 类将是相同的,只是一个用于读取,另一个用于写入,将它们中的每一个表示为一个单独的类是否很好?

    最佳答案

    那个样子还行如果您查看一些集成框架,例如 Camel 或 Spring Integration,它们有一些非常相似的东西。它们还具有不同类型的 channel (p2p 异步、p2p 同步和 pub-sub)和转换器。我提到这 2 个非常成熟的框架,以防你想使用它们而不是自己编写(我强烈建议你看看 Camel,因为它可能提供你想要的东西)。

    关于 Readers/Writers 的问题,我认为将它们保留为单独的类肯定会更好,否则可能会造成混淆(这个类是用作读取器还是写入器?)并且可以防止错误(有人配置读取器,但是将其作为作家注入(inject))。

    您可能希望使用在读取器和写入器(或委托(delegate))之间共享的实用程序类来避免重复代码。

    关于java - OOP 设计用于从不同来源读取数据并将其发送到不同目的地的系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37359975/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com