代码之家  ›  专栏  ›  技术社区  ›  hplbsh

哪种设计模式?

  •  -1
  • hplbsh  · 技术社区  · 15 年前

    我正在寻找两种模式或设计思想在C++中实现,这将允许如下。

    1。

    • 相似物池
    • 客户端请求并放弃的对象
    • 泳池在耗尽时会变大,不会收缩。
    • 将有多个客户端(每个客户端一个池以避免互斥)

    一个 对象池 似乎最合适。

    2。

    从池中获取的对象将是动态链接在一起的数据处理器。每个对象将执行一些操作,这些操作可能会或可能不会在传递数据之前更改数据(也可能会终止链)。

    这个要求让我有点不知所措。我在考虑修改 责任链 将数据传递给所有人的位置。

    但是,我很谨慎,不要简单地从空气中提取模式,并假设它是最好的方法,所以我会感谢一些反馈,其他想法,并借鉴其他人的经验!

    谢谢,

    斯图尔特。

    感谢迄今为止的反馈:

    对象执行实时数据的解码/分析/转换。池将包含从同一个基类派生的各种对象。

    控制平面将根据外部条件动态创建和初始化对象链和对象。

    当数据通过对象时,可以显式地指示/更新数据的格式。然而,这是孤立的,并没有什么后果,因为它在链的创建众所周知。

    战略模式值得研究。

    3 回复  |  直到 15 年前
        1
  •  0
  •   djna    15 年前

    一堆“相似”的物体?池的性质是,当您从池中请求一个项目时,您不知道得到的是哪个项目。所以相似是不够的,它们必须是相同的。

    但是他们被锁起来了?所以它们是不同的?所以当你得到一个对象时,你可以用某种方式“配置”它。这个配置可以撤消,这样对象就可以返回池了?

    所以我的第一个问题是:为什么不在需要的时候“新建”对象,然后在完成后删除它们(或者让它们gc-ed)?

    你不会说是什么驱使你想到游泳池。创建这些对象的成本是否非常高?模式需要上下文,您没有提供足够的信息让我们评论池的适当性。

    一个想法:模式==code,代码==bug。更少的代码==更少的错误。尽你所能保持简单。

    责任链的想法听起来似乎是合理的,但你又没有提供足够的信息。“链条”的顺序重要吗?如何确定?它会随时间变化吗?它真的是一个链条还是更像一个“网”。所有对象都转换数据吗?转换的含义是什么?这可能会影响链中以前的项对对象的看法吗?

    听起来你的处理过程非常灵活。你是否建立了过度的灵活性?什么要求导致了这个“链”概念?

        2
  •  0
  •   vehomzzz    15 年前

    您需要提供关于如何使用这些对象的更多详细信息。互动吗?

    您还需要一个管理器来管理对象的生命周期(创建、分发)。管理器通常作为 singleton …也考虑一个 builder 创建对象的模式。

        3
  •  0
  •   Alex Martelli    15 年前

    您似乎已经确定了密钥模式,但我不确定“池中的对象”在它们之间有什么不同(如果有),也就是说,在将(可能修改的)数据传递到链中的下一个对象(或断开链)之前,每个对象如何知道执行可能不同的处理?如果这些物体在游泳池里,我想它们最好是没有区别和无法辨别的——所以,你需要一个 策略 同样的模式,使这些相同的对象执行不同的处理和逻辑…?