过滤器模式

来源:互联网 发布:js undefend 判断 编辑:程序博客网 时间:2024/06/07 21:45

过滤器模式顾名思义就是根据我们需要过滤对象,得到需要的对象,属于结构型设计模式。
过滤器在现实中也有很多例子,比如净化水,滤波器等…

这里写图片描述

public interface FilterPerson {    List<Person> filterMeet(List<Person> list);}
public class Person {    public String name;    public String gender;    public Person() {    }    public Person(String name, String gender) {        this.name = name;        this.gender = gender;    }}
public class ImpGenderPerson implements FilterPerson {    @Override    public List<Person> filterMeet(List<Person> list) {        List<Person> genderList = new ArrayList<>();        for (Person p : list) {            if ("1".equals(p.gender)) {                genderList.add(p);            }        }        return genderList;    }}
public class ImpNamePerson implements FilterPerson {    @Override    public List<Person> filterMeet(List<Person> list) {        List<Person> nameList = new ArrayList<>();        for (Person p : list) {            if ("Java".equals(p.name)) {                nameList.add(p);            }        }        return nameList;    }}
public class FilterPatterDemo {    public static void main(String[] args) {        List<Person> list = new ArrayList<>();        Person p = new Person("Java", "1");        list.add(p);        p = new Person("Kotlin", "1");        list.add(p);        p = new Person("object-c", "0");        list.add(p);        FilterPerson filterPerson = new ImpGenderPerson();        List<Person> people = filterPerson.filterMeet(list);        println(people);        filterPerson = new ImpNamePerson();        people = filterPerson.filterMeet(list);        println(people);    }    public static void println(List<Person> list) {        System.out.println("----------------------");        Person p = null;        for (int i = 0; i < list.size(); i++) {            p = list.get(i);            System.out.println("Person:" + p.name + "->" + p.gender);        }        System.out.println("----------------------");    }}

结果:
这里写图片描述

原创粉丝点击