假设我有一组数字,例如。A = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]。
还有几个规则,例如: a:数字是 3 的倍数;b:数字是5的倍数;
使用规则,很容易将原始集合分成三部分:
A_3 = [3, 6, 9, 12]
A_5 = [5, 10]
A_other = [2, 4, 7, 8, 11]
我想知道设计集合和规则类以实现目标的最佳方法:
- 添加或减少规则很容易
- 可以轻松更改集合中元素的类型
谢谢。
假设我有一组数字,例如。A = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]。
还有几个规则,例如: a:数字是 3 的倍数;b:数字是5的倍数;
使用规则,很容易将原始集合分成三部分:
A_3 = [3, 6, 9, 12]
A_5 = [5, 10]
A_other = [2, 4, 7, 8, 11]
我想知道设计集合和规则类以实现目标的最佳方法:
谢谢。
假设您想使用 C#,我将从以下内容开始:
// General interface to filter out whatever you want, given a list:
public interface IFilterElements<T>
{
IEnumerable<T> Filter(IEnumerable<T> elementList);
}
// An example imlementation - add more of these as required:
class FilterElementsThatAreEven<T> : IFilterElements<T>
{
public IEnumerable<T> Filter(IEnumerable<T> elementList)
{
// Some implementation to return a sorted set / list
}
}
在您的调用方法中,您可以执行以下操作:
// List to filter
IEnumerable<int> myListOfInts = new int[]{1, 2, 3, 4, 5, 6};
// Instantiation of the implementation - also where you specify the
// type of data to filter (could be of class "MagicLemur" instead of int)
IFilterElements<int> myIntFilter = new FilterElementsThatAreEven<int>();
var filteredList = myIntFilter.FilterElementsThatAreEven();