我试图使用复合模式重构树状结构。但是,它似乎并不完全符合模式要求:
情况如下图所示:
所以,我想知道哪个是最好的解决方案:
欢迎任何指导或建议......
提前致谢。
修改
在仔细考虑@Waog响应,阅读有关该主题的更多参考资料并再次考虑我的问题后,我认为合理的解决方案可能如下所示:
Node接口,用于组成不同类型节点的结构和特定接口(是叶子,是复合的)。此外,在需要时使用抽象类提供默认实现。下面是最终情况的图表:
非常感谢@Waog的想法和解释。我希望我有这个主意......
答案 0 :(得分:1)
首先:感谢您提供一个小图,而不是1000行代码。
1。由于重构是关于改进代码结构,我不推荐这个选项。因为你在不完美的设计上构建了更多的代码,而不是改进它。
2。违反了Liskov substitution principle。我不建议你这样做。
3.1 访客模式只有在所有树元素上执行某些操作时才有意义。到目前为止,您的问题仅仅是建模树结构,因此请勿使用此模式。这是行为设计模式。您考虑结构问题,它需要结构设计模式或根本不需要模式。不要使用太多模式的反模式:)
3.2 复合模式可以满足您的需求,但您需要通过继承自第一个接口的第二个接口来扩展它。扩展模式如下所示:
编辑:与OP @ predicador37进行更长时间的对话(见评论)之后,该模式的具体实现就是结果: