Режим фильтра Java (шаблон фильтра/критерия)
Паттерн фильтра или шаблон критериев - это дизайн -шаблон, который позволяет разработчикам использовать различные стандарты для фильтрации группы объектов и подключения их развязкой через логические операции. Этот тип дизайна - структурный шаблон, который объединяет несколько стандартов для получения одного стандарта.
Паттерн фильтра или шаблон критериев - это дизайн -шаблон, который позволяет разработчикам использовать различные стандарты для фильтрации группы объектов и подключения их развязкой через логические операции. Этот тип дизайна - структурный шаблон, который объединяет несколько стандартов для получения одного стандарта.
выполнить
Мы создадим объект человека, интерфейс критериев и класс объектов, который реализует интерфейс для фильтрации списка объектов человека. CriteriApatterndemo, наш демонстрационный класс использует объекты критериев для фильтрации списков объектов человека на основе различных стандартов и комбинаций.
Шаг 1
Создайте класс, чтобы применить стандарт в этом классе.
Человек. Ява
Public Class Person {private String name; частный строковый пол; частная строка MARITALSTATUS; Public Person (String Name, String Gender, String MaritalStatus) {this.name = name; this.gender = пол; this.maritalstatus = maritalstatus; } public String getName () {return name; } public String getGender () {return Gender; } public String getMaritalStatus () {return maritalstatus; }}Шаг 2
Создайте интерфейс для критериев.
Критерии. Ява
импортировать java.util.list; Критерии публичного интерфейса {public list <derss> meetcrieteriШаг 3
Создайте класс объектов, который реализует интерфейс критериев.
Criteriamale.java
Импорт java.util.arraylist; импортировать java.util.list; Критериал -критерия открытого класса реализует критерии {@override public list <dersscretcriteria (list <person> persons) {list <person> malepersons = new Arraylist <derss> (); для (человек: лиц) {if (person.getgender (). equalsignorecase ("male")) {malepersons.add (человек); }} вернуть Malepersons; }}Criteriafemale.java
Импорт java.util.arraylist; импортировать java.util.list; Критериал -критерия открытого класса реализует критерии {@override public list <derss> meetcrieteria (list <person> persons) {list <person> femalepersons = new Arraylist <derss> (); для (человек: лиц) {if (person.getgender (). equalsignorecase ("Женщина")) {femalepersons.add (человек); }} return femalepersons; }}Criteriasingly.java
Импорт java.util.arraylist; импортировать java.util.list; Критерии публичного класса реализуют критерии {@override public list <dersciper> meetcrieteria (list <person> persons) {list <person> singlepersons = new Arraylist <dern> (); для (человек: лиц) {if (person.getmaritalstatus (). equalsignorecase ("single")) {singlepersons.add (человек); }} вернуть SinglePersons; }}AndCriteria.java
импортировать java.util.list; Публичный класс и критерия реализует критерии {частные критерии; частные критерии другие критерии; публичная и критерия (критерии критериев, критерии других критериев) {this.criteria = критерии; this.othercritia = othercriteria; } @Override public list <derss> meetcrieteria (list <derson> persons) {list <person> firstcriteriapersons = criteria.meetcrieteria (люди); вернуть другие criteria.meetcrieteria (FirstCriteriapersons); }}Orcriteria.java
импортировать java.util.list; Общедоступный класс Orcriteria реализует критерии {частные критерии; частные критерии другие критерии; public orcriteria (критерии критериев, критерии другой критерии) {this.criteria = критерии; this.othercritia = othercriteria; } @Override public list <derss> meetcrieteria (список <person> persons) {list <person> firstcriteriaitems = criteria.meetcrieteria (лица); Список <person> othercriteriaitems = othercriteria.meetcrieteria (люди); для (человек человек: othercriteriaitems) {if (! FirstCriteriAitems.contains (человек)) {FirstCriteriAitems.Add (человек); }} return FirstCriteriAitems; }}Шаг 4
Используйте разные критерии (критерии) и их комбинацию, чтобы фильтровать списки объектов человека.
Критериапаттерндемо. Ява
Критериапаттер -критерий класса {public static void main (string [] args) {list <person> persons = new Arraylist <derscient> (); Persons.add (новый человек («Роберт», «Мужчина», «Сингл»)); люди. Адд (новый человек («Джон», «Мужчина», «женат»); Persons.add (новый человек («Лора», «Женщина», «женат»)); Persons.add (новый человек («Диана», «Женщина», «Сингл»)); Persons.add (новый человек («Mike», «Male», «сингл»)); Persons.add (новый человек («Бобби», «Мужчина», «Сингл»)); Критерии мужской = новый критериал (); Критерии женский = новый критерий (); Критерии Single = новый критерийнгонгла (); Критерии SingleMale = новая и критерия (сингл, мужчина); Критерии Sustorfemale = new Orcriteria (одинокая, женщина); System.out.println ("Males:"); printpersons (male.meetcriteria (люди)); System.out.println ("/nfemales:"); printpersons (wem.meetcrieteria (люди)); System.out.println ("/nsingle Males:"); printpersons (singlemale.meetcrieteria (люди)); System.out.println ("/nsingle или женщины:"); printpersons (mountorfemale.meetcrieteria (люди)); } public static void printpersons (list <derson> persons) {for (person person: persons) {System.out.println ("Person: [name:" + person.getName () + ", пол:" + person.getgender () + ", семейный статус:" + person.getmaritalstatus () + "]"); }}}Шаг 5
Проверьте выход.
Мужчины: Человек: [Имя: Роберт, Гендер: Мужчина, Семейное положение: Одинокий человек] Человек: [Имя: Джон, Пол: мужчина, семейный статус: женат] человек: [Имя: Майк, Пол: мужчина, семейный статус: одинокий] человек: [Имя: Бобби, пол: мужчина, семейный статус: одинокий]. : Сингл] одинокие мужчины: человек: [Имя: Роберт, Пол: Мужчина, Семейное положение: холост] Человек: [Имя: Майк, пол: мужчина, семейный статус: холост] Человек: [Имя: Бобби, пол: мужчина, семейный статус: одинокий] одинокий или самки: человек: [Имя: Роберт, Гендер: Мужское Статус: Сингл]. Пол: мужчина, семейное положение: одинокий] человек: [Имя: Бобби, пол: мужчина, семейное положение: одинокий] человек: [Имя: Лаура, пол: женщина, семейный статус: женат]
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!