结合战略和复合模式

时间:2013-10-15 14:22:28

标签: design-patterns composite strategy-pattern

我想在我的软件中结合两种设计模式。我首先创建了一个复合模式,为我的业务问题建模。

enter image description here

因此,我很好地模拟了我的问题的结构,并将创建一个对象树。 我想在此运行一些业务逻辑(例如 execute 函数,它返回许多元素)。但是这个算法需要在高水平上调整。即我希望能够更改图片中显示的所有类的执行函数。

我正在寻找一些有用的文档和/或提示!有什么想法吗?

2 个答案:

答案 0 :(得分:3)

经常组合设计模式。我认为,大多数模式书籍分别显示每一个都会误导人们了解它们。

你的例子有点模糊,所以有点难以完全理解你的意思,但我认为将execute()函数分解为一个单独的界面,将其转化为策略并允许注入该策略进入A类(复合的根)是一种解决方案。然后,A类可以将策略注入正在合成的其他对象。

答案 1 :(得分:0)

我没有看到复合模式适用于组件是异构类型的对象,这些组件不共享共同的祖先。您需要所有组件继承某种Component类,可能使用CompositeLeaf子类来指定叶子和节点的一般行为。

  

A怎样才能知道在C / E中注入什么?它只知道它有   “概念课”的孩子们

A不应该知道它有“概念课”的孩子。它应该只知道它有Component个孩子。 C和E是那些知道他们属于“概念课”的人。根据您的语言,C和E的这种双重性质可能很难实现(没有多重继承等)。

您是否可以提供有关Class EClass C从“概念超类”派生的事实如何干扰整个复合/执行(/策略)事件的详细信息?没有这些知识,很难推荐任何东西。