我正在寻找几种模式或设计思想,以便在C ++中实现以下内容。
1
对象池似乎最合适。
2
从池中获取的对象将是将动态链接在一起的数据处理器。在传递数据之前,每个对象都会执行一些操作,这些操作可能会也可能不会改变数据(或者它们可能会终止链接)。
这个要求让我有点卡住了。我正在考虑修改后的责任链,其中数据将传递给所有人。
然而,我很担心只是从空中采摘模式并假设它是最好的方法,所以我会欣赏一些反馈,另类的想法并借鉴他人的经验!
谢谢,
斯图尔特。
感谢您的反馈:
对象执行实时数据的解码/分析/转换。该池将包含从同一基类派生的各种对象的对象。
控制平面将根据外部标准动态创建和初始化对象链和对象。
数据格式在通过对象时可以明确指示/更新。然而,这是孤立的,并且在链条创造时已知的结果很少。
策略模式值得研究。
答案 0 :(得分:0)
答案 1 :(得分:0)
你似乎确定了关键模式,除了我不确定“池中的对象”之间是如何区别的(如果有的话) - 也就是说,每个对象如何知道执行可能不同的处理在将(可能修改的)数据交给链中的下一个对象(或打破链)之前?如果对象在池中,那么我猜他们最好是无差别且无法区分的 - 所以,你是否也需要策略模式,以使这些相同的对象执行不同的处理和逻辑...... ?
答案 2 :(得分:0)
一组“相似”的物体?池的性质是,当您从池中请求项目时,您不知道您正在获得哪个项目。如此相似是不够的,它们需要相同。
然后他们被束缚了?所以他们不一样?所以当你得到一个对象时,你会以某种方式“配置”它。并且可以撤消该配置,以便可以将对象返回到池中?
所以我的第一个问题是:为什么不在需要时“新”对象并在完成时删除它们(或者让它们进行gc-ed)?
你没有说是什么驱使你对游泳池的想法。创建这些对象的成本是否非常高?模式需要上下文,你没有给出足够的信息让我们评论池的适当性。
一个想法:模式==代码,代码== bug。更少的代码==更少的错误。如果可以,请保持简单。
责任链的想法听起来似乎有道理,但你再也没有提供足够的信息。 “链”的顺序是否重要?它是如何确定的?它会随着时间而改变吗?它真的是一个链条或更像是一个“网”。所有对象都会转换数据吗?进行转换有什么影响,可能会影响链中的先前项如何考虑对象?
听起来你有一些非常灵活的处理方式。你在建立过度的灵活性吗?什么要求导致了这种“链条”概念?