编程模式 - 单数据结构 - 多种方法

时间:2015-09-28 08:53:33

标签: c# design-patterns

我有一个数据结构,它包含相对少量的对象(大约1500个)和几个作用于它的方法。是否有编程模式来迭代数据上的方法而不是编写更多的样板代码?

2 个答案:

答案 0 :(得分:1)

这取决于您使用的语言。但是,您要查找的概念map

它通常是这样的:

map f xs

在命令式的风格中,这将是:

for (int i = 0; i < xs.size(); i++) {

    f(xs[i])
}

我刚看到C#标签。

在C#中,您可以使用功能样式,命令式样式或两者兼而有之。如果使用功能样式,则可以使用LINQ。但是,您的方法不应修改基础对象,因为LINQ语句不应有副作用。对于命令式样式,您只需使用foreach即可。

您可以使用LINQ查询集合。例如,这会找到x中的所有myObjects,以便f(x)

var fs = myObjects.Where(x => f(x))

答案 1 :(得分:0)

如果这些方法之间的共性只是他们将列表作为输入并输出结果,但结果每次都是不同的类型,那么你可以去除多少。如果对结果类型有一些常见的抽象,你可以简单地将它建模为一系列:

Func<IEnumerable<TInput>, TResult>

然后你可Select() Invoke()这些函数的结果(或SelectMany()如果你希望输出被展平)。

或者,你可以有一系列的

Func<TInput, TResult>

并迭代数据列表,逐个将所有函数应用于每个元素。但是结果将按1500个数据元素中的每一个进行排序,而不是每个函数的完整执行的连接。