我正在试图弄清楚如何合并迭代器和复合对象。 什么可以是下面结构的最佳实现。
class Composite<Item> : Item
{
}
class Iterator<Item>
{
}
class Iterable<Item>
{
}
答案 0 :(得分:0)
在C#中,很少会在此方法中执行迭代器。通常,您只需在通用集合中使用您的项目。
至于Composite Pattern - 这种模式背后的主要动机是让你的复合材料被视为只是一个项目。这通常意味着您只需执行以下操作即可将复合与“迭代”“组合”:
// Given:
public class Composite<Item> : IItem {}
你可以这样做:
List<IItem> items = new List<IItem>();
items.Add(new Item());
items.Add(new Composite<Item>());
items.Add(new Item());
// Iterate through the items...
foreach(var item in items)
{
item.Foo();
}