我在设计一个课程
1-一组初始项目(一个简单的集合/列表)
2-1或更多筛选对象,这些对象接受初始项集并返回新集。每个过滤器对象可能返回一组不同的项,因此主类执行这些集合的结果并与其交集。然而,这些过滤器对象中的一些根据来自其他筛选器的集合的交集的结果集而不是初始集执行子集操作。
如果这个类的主要功能是通过执行基于给定集和一个或多个筛选器对象的交叉和子集操作来返回一个新集,那么我应该调用这个类吗?
过滤器类的部分接口如下所示:
constructor(ItemsSet set, options) : ItemsSet
getFilteredSet() : ItemsSet对于我正在设计的课程:
constructor(ItemsSet mainSet, filters) : ItemsSet
getSet(): ItemsSet我在想:
SubsetOfItems
SubsetOfSets
FiltersSetExecutor
ItemsSetFilterexecutor
我倾向于使用SubsetOfItems,但是这个类并不总是有一个过滤器来执行来自其他集合交集的结果集的子集。希望这是合理的。
换句话说,操作可以是相交的,子集的,交的和子集的.
发布于 2021-10-28 00:45:53
你似乎在描述复合模式。您的类只是一个复合对象,它执行所有不同集合的交集。但是,在不了解用例的全部细节的情况下,我建议从filter方法而不是通过构造函数接受set。
例如,在Java中,它看起来像这样:
public interface Filter<T> {
Set<T> filter(Set<T> xs);
}
public interface FirstFilter<T> implements Filter<T> {
// ...
}
public interface SecondFilter<T> implements Filter<T> {
// ...
}
public interface FilteringOnSubset<T> implements Filter<T> {
// ...
}
public interface IntersectionCompositeFilter<T> implements Filter<T> {
public IntersectionCompositeFilter(Filter<T>... filters) {
// ...
}
// ...
}
public static void main(String args[]) {
Filter<String> filter = new FilteringOnSubset<>(new IntersectionCompositeFilter<>(new FirstFilter<>(), new SecondFilter<>()));
Set<String> xs = ...
Set<String> filteredXs = filter.filter(xs)发布于 2021-10-28 11:46:58
从自然英语的角度来看,问题是执行过滤的对象被称为“过滤器”。但是,您已经使用这个词来引用执行每个筛选阶段的对象。
应用一系列过滤器的对象的明显名称应该是"FilterBatch“或"FilterPipeline”之类的东西。
但是,如果我正确地理解这个过滤器批处理对象实际上具有复杂的内部逻辑来应用每个阶段和确定每个阶段的输入和输出是如何连接的,那么用"FilterEngine“或"FilterMultiplex”来表示可能更合适。
https://softwareengineering.stackexchange.com/questions/433098
复制相似问题