Лучшее руководство по шаблон фильтра в 2024 году. В этом руководстве вы можете изучить реализация,

шаблон фильтра

Режим фильтра (Filter Pattern) или стандартный режим (Критерии Pattern) представляет собой модель разработки, которая позволяет разработчикам использовать различные критерии для фильтрации набор объектов, с помощью логических операций отцеплять способ подключения их. Этот тип шаблона проектирования структурной схемы, которая сочетает в себе несколько критериев получения единого стандарта.

реализация

Мы создадимобъект Person,интерфейс класса Критерии и сущность реализации интерфейса для фильтрации списка объектовPerson.CriteriaPatternDemo, наши демонстрационные классы использоватькритерииобъекты, основанные на различных критериях и их комбинациях , чтобы отфильтровать список объектовPerson.

Фильтр модели UML диаграмма

Шаг 1

Создайте класс, на применении стандартов в этом классе.

Person.java

Открытый класс Person {
	
   частное имя строки;
   частное Строка пол;
   частная Строка MaritalStatus;

   публичное лицо (имя String, String пол, String MaritalStatus) {
      this.name = имя;
      this.gender = пол;
      this.maritalStatus = MaritalStatus;		
   }

   Строка GetName общественности () {
      вернуть имя;
   }
   Строка getGender общественности () {
      вернуться пол;
   }
   Строка getMaritalStatus общественности () {
      вернуть MaritalStatus;
   }	
}

Шаг 2

Создание интерфейса для стандартных (критериев).

Criteria.java

импорт java.util.List;

Критерии общественного интерфейса {
   открытый список <Person> meetCriteria (List <Person> человек);
}

Шаг 3

Создание классов сущностей реализованныекритерииинтерфейса.

CriteriaMale.java

импорт java.util.ArrayList;
импорт java.util.List;

Открытый класс CriteriaMale реализует критерии {

   @Override
   открытый список <Person> meetCriteria (List <Person> человек) {
      Список <Person> malePersons = новый ArrayList <Person> (); 
      для (лицо человека: человек) {
         если (person.getGender (). equalsIgnoreCase ( "мужской")) {
            malePersons.add (человек);
         }
      }
      вернуть malePersons;
   }
}

CriteriaFemale.java

импорт java.util.ArrayList;
импорт java.util.List;

Открытый класс CriteriaFemale реализует критерии {

   @Override
   открытый список <Person> meetCriteria (List <Person> человек) {
      Список <Person> femalePersons = новый ArrayList <Person> (); 
      для (лицо человека: человек) {
         если (person.getGender (). equalsIgnoreCase ( "женский")) {
            femalePersons.add (человек);
         }
      }
      вернуть femalePersons;
   }
}

CriteriaSingle.java

импорт java.util.ArrayList;
импорт java.util.List;

Открытый класс CriteriaSingle реализует критерии {

   @Override
   открытый список <Person> meetCriteria (List <Person> человек) {
      Список <Person> singlePersons = новый ArrayList <Person> (); 
      для (лицо человека: человек) {
         если (person.getMaritalStatus (). equalsIgnoreCase ( "Single")) {
            singlePersons.add (человек);
         }
      }
      вернуть singlePersons;
   }
}

AndCriteria.java

импорт java.util.List;

Открытый класс AndCriteria реализует критерии {

   частные критерии критериев;
   частные критерии otherCriteria;

   общественного AndCriteria (критерии Критерии, критерии otherCriteria) {
      this.criteria = критерии;
      this.otherCriteria = otherCriteria; 
   }

   @Override
   открытый список <Person> meetCriteria (List <Person> человек) {
      Список <Person> firstCriteriaPersons = criteria.meetCriteria (человек);		
      вернуть otherCriteria.meetCriteria (firstCriteriaPersons);
   }
}

OrCriteria.java

импорт java.util.List;

Открытый класс OrCriteria реализует критерии {

   частные критерии критериев;
   частные критерии otherCriteria;

   общественные OrCriteria (критерии Критерии, критерии otherCriteria) {
      this.criteria = критерии;
      this.otherCriteria = otherCriteria; 
   }

   @Override
   открытый список <Person> meetCriteria (List <Person> человек) {
      Список <Person> firstCriteriaItems = criteria.meetCriteria (человек);
      Список <Person> otherCriteriaItems = otherCriteria.meetCriteria (человек);

      для (лицо человека: otherCriteriaItems) {
         если (! firstCriteriaItems.contains (человек)) {
	        firstCriteriaItems.add (человек);
         }
      }	
      вернуть firstCriteriaItems;
   }
}

Шаг 4

Использование различных критериев (критериев) и их комбинации , чтобы отфильтровать список объектовPerson.

CriteriaPatternDemo.java

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

public class CriteriaPatternDemo {
   public static void main(String[] args) {
      List<Person> persons = new ArrayList<Person>();

      persons.add(new Person("Robert","Male", "Single"));
      persons.add(new Person("John","Male", "Married"));
      persons.add(new Person("Laura","Female", "Married"));
      persons.add(new Person("Diana","Female", "Single"));
      persons.add(new Person("Mike","Male", "Single"));
      persons.add(new Person("Bobby","Male", "Single"));

      Criteria male = new CriteriaMale();
      Criteria female = new CriteriaFemale();
      Criteria single = new CriteriaSingle();
      Criteria singleMale = new AndCriteria(single, male);
      Criteria singleOrFemale = new OrCriteria(single, female);

      System.out.println("Males: ");
      printPersons(male.meetCriteria(persons));

      System.out.println("\nFemales: ");
      printPersons(female.meetCriteria(persons));

      System.out.println("\nSingle Males: ");
      printPersons(singleMale.meetCriteria(persons));

      System.out.println("\nSingle Or Females: ");
      printPersons(singleOrFemale.meetCriteria(persons));
   }

   public static void printPersons(List<Person> persons){
      for (Person person : persons) {
         System.out.println("Person : [ Name : " + person.getName() 
            +", Gender : " + person.getGender() 
            +", Marital Status : " + person.getMaritalStatus()
            +" ]");
      }
   }      
}

Шаг 5

Проверьте выход.

Мужчины: 
Человек: [Имя: Роберт, Пол: Мужской, Семейное положение: не замужем]
Человек: [Имя: Джон, Пол: Мужской, Семейное положение: женат]
Человек: [Имя: Mike, Пол: Мужской, Семейное положение: не замужем]
Человек: [Имя: Бобби, Пол: Мужской, Семейное положение: не замужем]

Женщины: 
Человек: [Имя: Лора, Пол: Женский, Семейное положение: женат]
Человек: [Имя: Diana, Пол: Женский, Семейное положение: не замужем]

Одиночные Мужчины: 
Человек: [Имя: Роберт, Пол: Мужской, Семейное положение: не замужем]
Человек: [Имя: Mike, Пол: Мужской, Семейное положение: не замужем]
Человек: [Имя: Бобби, Пол: Мужской, Семейное положение: не замужем]

Одинарной или Самки: 
Человек: [Имя: Роберт, Пол: Мужской, Семейное положение: не замужем]
Человек: [Имя: Diana, Пол: Женский, Семейное положение: не замужем]
Человек: [Имя: Mike, Пол: Мужской, Семейное положение: не замужем]
Человек: [Имя: Бобби, Пол: Мужской, Семейное положение: не замужем]
Человек: [Имя: Лора, Пол: Женский, Семейное положение: женат]
шаблон фильтра
10/30