Latest web development tutorials

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.

Filtermuster UML-Diagramm

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]