【设计模式学习笔记】过滤器模式

过滤器模式:这种模式容许开发人员使用不一样的标准来过滤一组对象,经过逻辑运算以解耦的方式把它们链接起来。这种类型的设计模式属于结构型模式,它结合多个标准来得到单一标准。【菜鸟】其实就是按条件筛选一组对象出来。html

咱们车厂如今车型不少,如今只想筛选出来bwm的数量。java

1.1 定义车

package filter;

/************************************************ *@ClassName : Car *@Description : TODO *@Author : NikolaZhang *@Date : 【2018/12/15 0015 17:21】 *@Version : 1.0.0 *************************************************/

public class Car {
    private String name;

    public String getName() {
        return name;
    }

    public Car(String name) {
        this.name = name;
    }
}

1.2 过滤器

咱们将全部的车做为参数,按条件筛选出来bwm.web

package filter;

import java.util.ArrayList;
import java.util.List;

/************************************************ *@ClassName : CarFilter *@Description : TODO *@Author : NikolaZhang *@Date : 【2018/12/15 0015 17:20】 *@Version : 1.0.0 *************************************************/

public class CarFilter {
    private List<Car> list = new ArrayList<>();

    public List<Car> filterCar(List<Car> listCar){
        for (Car car :listCar){
            if("bwm".equals(car.getName())){
                list.add(car);
            }
        }
        return list;
    }
}

1.3 测试

package filter;

import java.util.ArrayList;
import java.util.List;

/************************************************ *@ClassName : Test *@Description : TODO *@Author : NikolaZhang *@Date : 【2018/12/15 0015 17:20】 *@Version : 1.0.0 *************************************************/

public class Test {
    public static void main(String[] args) {
        List<Car> list = new ArrayList<>();
        list.add(new Car("bwm"));
        list.add(new Car("benz"));
        list.add(new Car("BWM"));

        CarFilter carFilter = new CarFilter();
        System.out.println("符合条件的车数:"+carFilter.filterCar(list).size());
    }
}

1.4 结果

在这里插入图片描述

参考

【菜鸟教程】:http://www.runoob.com/design-pattern/filter-pattern.html设计模式