0

我似乎总是依赖工厂模式/继承来进行代码重用,并且一直在阅读关于组合而不是继承的内容,并且确实看到了松散耦合的好处。您肯定会通过继承获得依赖关系。所以我试图围绕“处理”对象的模式来思考。

他们基本上都是,

  • 从数据库中获取他们的“环境变量”,
  • 获取文件列表,
  • 处理/转换每个文件(想想将 XML 转换为 CSV),这需要
    • 逐行读取文件
    • 将文件逐行写入另一种格式
    • 更新状态(将状态写入数据库)

获取文件列表可能意味着从本地目录获取文件列表,或者从远程 FTP 站点获取文件列表。

我正在努力使用 compositoin 的是代码重用。使用继承,如果我有一个基抽象类,我可以将我的 GetEnvironment、UpdateStatus、方法放在基类中,子类将免费获得它们。我如何能够使用组合获得这样的代码重用?我可以有辅助类,但我基本上会在每个“流程”类中重复这些辅助类的样板使用。如有必要,我可以编写一些伪代码。

4

1 回答 1

0

鉴于问题中的详细信息,我的解决方案如下:

  • 环境
    • 包含环境详细信息的域对象。
  • EnvironmentDAO 和 DBEnvironmentDAO
    • 用于构建 Environment 域对象的接口和 DB 支持的实现。
  • AToB转换器
    • 获取文件并引用环境对象
    • 执行转换,写入另一个文件并更新数据库中的状态
  • 启动器
    • 获取文件列表。
    • 使用 DAO 从数据库中检索环境。
    • 采用可扩展机制(如 ExecutorService)并行运行 AToBConverters。
于 2012-10-04T16:05:59.140 回答