java - 在数据集合上运行流程的良好设计模式?

标签 java design-patterns collections filter sieve

我认为最好用代码来解释,这只是一个简单的例子:

public class MyPOJO {

    public String name;
    public int age;

    public MyPOJO(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public class MyProcessor {

    public List<MyPOJO> process(List<MyPOJO> mypojos) {
        List<MyPOJO> temp = new ArrayList<MyPOJO>; 
        for (int i=0; i <moypojos.size(); i++) {
            if (filterOne(mypojos[i])) continue;
            if (filterTwo(mypojos[i])) continue;
            if (filterThree(mypojos[i])) continue;
            temp.add(mypojos[i];
        }
    }

    public boolean filterOne(MyPOJO mypojo) {
        // in practice filters aren't so basic
        return (mypojo.age < 21);
    }
    // assume implementations for the other filter methods
}

哎呀,太丑了。基本上我有一个集合,我想通过各种筛选来仅继续处理满足特定条件的对象。我的猜测是有比一堆返回 boolean 值的方法更好的模式。

最佳答案

您可以拥有 IFilters 列表。

像这样

boolean filtersResult = false;
for (IFilter filter : filters) {
    filterResult = filter.process(mypojos[i])

    if (filterResult)
        break;
}

关于java - 在数据集合上运行流程的良好设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2427048/

相关文章:

java - 如何正确将此 SQL case 语句转换为 JPA Criteria 查询

java - 如何分离实现相同接口(interface)的两个类的函数模拟?

java - 如何在不使用 split() 的情况下提取名字和中间名的首字母和姓氏,就像在java中一样

java - 为什么首选使用不可变对象(immutable对象)作为 Set 的元素?

java - 当输入的年龄与数字不同时,我需要返回字符串

design-patterns - ServiceStack + ORMLite + 存储库模式

c++ - 如何布局一个简单游戏的代码?

java - 根据Java中对象的类型选择实现

c# - Java 中的 TreeSet 等同于 C#.net

java - Java 计算单词对