Filtermuster
Filtermodus (Filter Pattern) oder im Standardmodus (Kriterien Pattern) ist ein Design-Modell, mit dem Entwickler ermöglicht es, verschiedene Kriterien verwenden, um eine Reihe von Objekten zu filtern, durch logische Operationen Weise zu entkoppeln, um sie zu verbinden. Diese Art von Design-Muster eines Strukturschema, das mehrere Kriterien erhalten einen einheitlichen Standard kombiniert.
Realisierung
Wir werden einePersonObjekt, Kriterien Entitätsklasse Schnittstelle und Implementierung der Schnittstelle erstellen die Liste derPerson- Objekte zu filtern.CriteriaPatternDemo,nutzen Sie unsere Demonstration Klassen ObjekteKriterien,anhand verschiedener Kriterien und deren Kombinationen , die Liste derPerson- Objekte zu filtern.
Schritt 1
Erstellen Sie eine Klasse, über die Anwendung der Standards in dieser Klasse.
Person.java
public class Person { private String name; private String Geschlecht; private String maritalStatus; öffentliche Person (String name, String Geschlecht, String maritalStatus) { this.name = name; this.gender = Geschlecht; this.maritalStatus = maritalStatus; } public String getName () { Rückkehr Name; } public String getGender () { Rückkehr Geschlecht; } public String getMaritalStatus () { Rückkehr maritalStatus; } }
Schritt 2
Erstellen Sie eine Schnittstelle für Standard (Kriterien).
Criteria.java
Import java.util.List; public interface Kriterien { public List <Person> meetCriteria (List <Person> Personen); }
Schritt 3
Erstellen von Entity - KlassenKriterienSchnittstelle realisiert.
CriteriaMale.java
Import java.util.ArrayList; Import java.util.List; public class CriteriaMale implementiert Kriterien { @Override public List <Person> meetCriteria (List <Person> Personen) { List <Person> malePersons = new Arraylist <Person> (); für (Person Person: Personen) { if (person.getGender (). equalsIgnoreCase ( "male")) { malePersons.add (Person); } } Rückkehr malePersons; } }
CriteriaFemale.java
Import java.util.ArrayList; Import java.util.List; public class CriteriaFemale implementiert Kriterien { @Override public List <Person> meetCriteria (List <Person> Personen) { List <Person> femalePersons = new Arraylist <Person> (); für (Person Person: Personen) { if (person.getGender (). equalsIgnoreCase ( "weiblich")) { femalePersons.add (Person); } } Rückkehr femalePersons; } }
CriteriaSingle.java
Import java.util.ArrayList; Import java.util.List; public class CriteriaSingle implementiert Kriterien { @Override public List <Person> meetCriteria (List <Person> Personen) { List <Person> singlePersons = new Arraylist <Person> (); für (Person Person: Personen) { if (person.getMaritalStatus (). equalsIgnoreCase ( "SINGLE")) { singlePersons.add (Person); } } Rückkehr singlePersons; } }
AndCriteria.java
Import java.util.List; public class AndCriteria implementiert Kriterien { Privat Kriterien Kriterien; Privat Kriterien otherCriteria; öffentliche AndCriteria (Kriterien Kriterien, Kriterien otherCriteria) { this.criteria = Kriterien; this.otherCriteria = otherCriteria; } @Override public List <Person> meetCriteria (List <Person> Personen) { List <Person> firstCriteriaPersons = criteria.meetCriteria (Personen); Rückkehr otherCriteria.meetCriteria (firstCriteriaPersons); } }
OrCriteria.java
Import java.util.List; public class OrCriteria implementiert Kriterien { Privat Kriterien Kriterien; Privat Kriterien otherCriteria; öffentliche OrCriteria (Kriterien Kriterien, Kriterien otherCriteria) { this.criteria = Kriterien; this.otherCriteria = otherCriteria; } @Override public List <Person> meetCriteria (List <Person> Personen) { List <Person> firstCriteriaItems = criteria.meetCriteria (Personen); List <Person> otherCriteriaItems = otherCriteria.meetCriteria (Personen); für (Person Person: otherCriteriaItems) { if (! firstCriteriaItems.contains (Person)) { firstCriteriaItems.add (Person); } } Rückkehr firstCriteriaItems; } }
Schritt 4
Mit Hilfe verschiedener Kriterien (Kriterien) und Kombinationen davon , die Liste derPerson- Objekte zu filtern.
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() +" ]"); } } }
Schritt 5
Stellen Sie sicher, ausgegeben.
Männer: Person: [Name: Robert, Geschlecht: Männlich, Beziehungsstatus: Single] Person: [Name: John, Geschlecht: Männlich, Familienstand: Verheiratet] Person: [Name: Mike, Geschlecht: Männlich, Beziehungsstatus: Single] Person: [Name: Bobby, Geschlecht: Männlich, Beziehungsstatus: Single] Frauen: Person: [Name: Laura, Geschlecht: Weiblich, Familienstand: Verheiratet] Person: [Name: Diana, Geschlecht: Weiblich, Beziehungsstatus: Single] Einzel Männer: Person: [Name: Robert, Geschlecht: Männlich, Beziehungsstatus: Single] Person: [Name: Mike, Geschlecht: Männlich, Beziehungsstatus: Single] Person: [Name: Bobby, Geschlecht: Männlich, Beziehungsstatus: Single] Single- oder Frauen: Person: [Name: Robert, Geschlecht: Männlich, Beziehungsstatus: Single] Person: [Name: Diana, Geschlecht: Weiblich, Beziehungsstatus: Single] Person: [Name: Mike, Geschlecht: Männlich, Beziehungsstatus: Single] Person: [Name: Bobby, Geschlecht: Männlich, Beziehungsstatus: Single] Person: [Name: Laura, Geschlecht: Weiblich, Familienstand: Verheiratet]