我想在我的软件中结合两种设计模式。我首先创建了一个复合模式,为我的业务问题建模。
因此,我很好地模拟了我的问题的结构,并将创建一个对象树。 我想在此运行一些业务逻辑(例如 execute 函数,它返回许多元素)。但是这个算法需要在高水平上调整。即我希望能够更改图片中显示的所有类的执行函数。
我正在寻找一些有用的文档和/或提示!有什么想法吗?
答案 0 :(得分:3)
经常组合设计模式。我认为,大多数模式书籍分别显示每一个都会误导人们了解它们。
你的例子有点模糊,所以有点难以完全理解你的意思,但我认为将execute()
函数分解为一个单独的界面,将其转化为策略并允许注入该策略进入A类(复合的根)是一种解决方案。然后,A类可以将策略注入正在合成的其他对象。
答案 1 :(得分:0)
我没有看到复合模式适用于组件是异构类型的对象,这些组件不共享共同的祖先。您需要所有组件继承某种Component
类,可能使用Composite
和Leaf
子类来指定叶子和节点的一般行为。
A怎样才能知道在C / E中注入什么?它只知道它有 “概念课”的孩子们
A不应该知道它有“概念课”的孩子。它应该只知道它有Component
个孩子。 C和E是那些知道他们属于“概念课”的人。根据您的语言,C和E的这种双重性质可能很难实现(没有多重继承等)。
您是否可以提供有关Class E
和Class C
从“概念超类”派生的事实如何干扰整个复合/执行(/策略)事件的详细信息?没有这些知识,很难推荐任何东西。