Latest web development tutorials

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

Режим фильтра (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, Пол: Мужской, Семейное положение: не замужем]
Человек: [Имя: Бобби, Пол: Мужской, Семейное положение: не замужем]
Человек: [Имя: Лора, Пол: Женский, Семейное положение: женат]