【问题标题】:Design Pattern Help - Composition and Code Re-use设计模式帮助 - 组合和代码重用
【发布时间】:2012-10-04 15:59:00
【问题描述】:

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

基本上都是,

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

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

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

【问题讨论】:

    标签: oop design-patterns composition


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多