![]() |
1
1
你所做的与 Composite 和 Visitor 模式。这两种图案很好地结合在一起,所以你似乎走对了。 要实现复合模式,请分配以下角色(请参阅复合模式UML图):
对复合类型调用的组件操作以递归方式传递给所有子级(叶和其他嵌套复合类型)。
要实现访问者模式,请重载
我建议你拿一份 Design Patterns 这本书由“四人帮”所著,它更好地解释了这些概念,并且比我所能理解的要详细得多。 以下是一些激发食欲的示例代码:
在记录中,您可能希望提供用于操作/访问子级的方法,而不是返回对基础子级向量的引用。 |
![]() |
2
0
我建议在使用公共容器类型时不要编写自己的迭代器。编写自己的迭代器在编写自己的容器时是有意义的。但是,当您计划编写自定义迭代器时,可以查看 Boost.Iterator 包裹。 |
![]() |
3
0
如果你想隐藏
但是,您应该考虑在设计中使用复合模式和访问者模式,而不是去解决所有这些问题。看看我的另一个答案。 |
|
Julia · 矢量中相加为总和S的值的数量 1 年前 |
![]() |
apetrai · 我应该如何假设算法使用哪种迭代器类别? 2 年前 |
![]() |
Pratik · 不使用Java DeepCopy迭代器 6 年前 |
![]() |
PanDe · 将两个列表合并为一个Dict、Tuple 6 年前 |
![]() |
bisarch · 迭代哈希集并在每次迭代中删除多个元素 6 年前 |