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

因此,我对问题的结构进行了很好的建模,并创建了一个对象树。我想对此运行一些业务逻辑(比如执行函数,它返回许多元素)。但是该算法需要在较高的层次上进行调整。我希望能够更改图片中显示的所有类的执行函数。
我正在寻找一些有用的文档和/或提示!有什么想法吗?
发布于 2013-10-16 12:01:41
我不认为组合模式能很好地工作,因为组件是异构类型的对象,它们不共享共同的祖先。您需要所有组件来继承某种类型的Component类,可能需要使用Composite和Leaf子类来指定树叶和节点的一般行为。
A如何知道在C/E中注入什么?它只知道它有“概念类”的孩子。
A不应该知道它有“概念类”的孩子。它应该只知道它有Component的孩子。C和E是那些知道自己属于“概念类”的人。根据您的语言,C和E的这种双重特性很难实现(没有多重继承,等等)。
能否提供详细信息,说明Class E和Class C是如何从“概念性超类”派生出来的,对整个复合/ execute() /策略事件有何影响?没有这方面的知识,很难推荐任何东西。
发布于 2013-10-15 17:48:02
设计模式通常是结合在一起的。我认为,大多数模式书都是分开显示的,这对了解它们的人来说是误导人的。
您的例子有点模糊,因此很难完全理解您的意思,但是,我认为将execute()函数分解成一个单独的接口,将其转换为一个策略,并允许将该策略注入到A类(复合的根)是一种解决方案。然后,A类可以将策略注入到正在组合的其他对象。
https://stackoverflow.com/questions/19383673
复制相似问题