Latest web development tutorials

Filtre Motif

Mode de filtre (Filter Pattern) ou en mode standard (Critères de Pattern) est un modèle de conception qui permet aux développeurs d'utiliser différents critères pour filtrer un ensemble d'objets, par le biais des opérations logiques de découpler façon de les connecter. Ce type de modèle de conception d'un schéma structurel, qui combine plusieurs critères obtenir une norme unique.

réalisation

Nous allons créer unobjet Person,interface de classe Critères d'entité et la mise en œuvre de l'interface pour filtrer la liste des objetsPerson.CriteriaPatternDemo, nos classes de démonstration utiliser des objetsde critères,en fonction de divers critères et des combinaisons de ceux - ci pour filtrer la liste des objetsPerson.

motif de filtre diagramme UML

Etape 1

Créer une classe, sur l'application des normes dans cette classe.

Person.java

public class Person {
	
   private String nom;
   le genre de chaîne privée;
   maritalStatus private String;

   Personne publique (String name, genre String, String maritalStatus) {
      this.name = nom;
      this.gender = sexe;
      this.maritalStatus = maritalStatus;		
   }

   public String getName () {
      Nom de retour;
   }
   public String getGender () {
      retour entre les sexes;
   }
   public String getMaritalStatus () {
      retour maritalStatus;
   }	
}

Etape 2

Créer une interface pour standard (critères).

Criteria.java

import java.util.List;

public interface Critères {
   Liste publique <Person> meetCriteria (Liste <Person> personnes);
}

Etape 3

Créer des classes d'entités réalisées interfaceCritères.

CriteriaMale.java

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

CriteriaMale public class implémente Critères {

   @Override
   Liste publique <Person> meetCriteria (Liste <Person> personnes) {
      Liste <Person> malePersons = new ArrayList <Person> (); 
      pour (personne personne: personnes) {
         if (person.getGender (). equalsIgnoreCase ( "MALE")) {
            malePersons.add (personne);
         }
      }
      retour malePersons;
   }
}

CriteriaFemale.java

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

CriteriaFemale public class implémente Critères {

   @Override
   Liste publique <Person> meetCriteria (Liste <Person> personnes) {
      Liste <Person> femalePersons = new ArrayList <Person> (); 
      pour (personne personne: personnes) {
         if (person.getGender (). equalsIgnoreCase ( "FEMININ")) {
            femalePersons.add (personne);
         }
      }
      retour femalePersons;
   }
}

CriteriaSingle.java

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

CriteriaSingle public class implémente Critères {

   @Override
   Liste publique <Person> meetCriteria (Liste <Person> personnes) {
      Liste <Person> singlePersons = new ArrayList <Person> (); 
      pour (personne personne: personnes) {
         if (person.getMaritalStatus (). equalsIgnoreCase ( "SINGLE")) {
            singlePersons.add (personne);
         }
      }
      retour singlePersons;
   }
}

AndCriteria.java

import java.util.List;

public class AndCriteria implémente Critères {

   critères de critères privés;
   Critères privés otherCriteria;

   publique AndCriteria (critères de critères, critères otherCriteria) {
      this.criteria = critères;
      this.otherCriteria = otherCriteria; 
   }

   @Override
   Liste publique <Person> meetCriteria (Liste <Person> personnes) {
      Liste <Person> firstCriteriaPersons = criteria.meetCriteria (personnes);		
      retour otherCriteria.meetCriteria (firstCriteriaPersons);
   }
}

OrCriteria.java

import java.util.List;

public class OrCriteria implémente Critères {

   critères de critères privés;
   Critères privés otherCriteria;

   OrCriteria publics (critères Critères, critères otherCriteria) {
      this.criteria = critères;
      this.otherCriteria = otherCriteria; 
   }

   @Override
   Liste publique <Person> meetCriteria (Liste <Person> personnes) {
      Liste <Person> firstCriteriaItems = criteria.meetCriteria (personnes);
      Liste <Person> otherCriteriaItems = otherCriteria.meetCriteria (personnes);

      pour (Person person: otherCriteriaItems) {
         if (! firstCriteriaItems.contains (personne)) {
	        firstCriteriaItems.add (personne);
         }
      }	
      retour firstCriteriaItems;
   }
}

Etape 4

En utilisant différents critères (critères) et des combinaisons de ceux - ci pour filtrer la liste des objetsPerson.

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()
            +" ]");
      }
   }      
}

Etape 5

Vérifiez la sortie.

Hommes: 
Personne: [Nom: Robert, Sexe: Homme, Etat civil: Célibataire]
Personne: [Nom: John, Sexe: Homme, Etat civil: Marié]
Personne: [Nom: Mike, Sexe: Homme, Etat civil: Célibataire]
Personne: [Nom: Bobby, Sexe: Homme, Etat civil: Célibataire]

Femmes: 
Personne: [Nom: Laura, Sexe: Femme, État civil: Marié]
Personne: [Nom: Diana, Sexe: Femme, Célibataire]

Hommes simples: 
Personne: [Nom: Robert, Sexe: Homme, Etat civil: Célibataire]
Personne: [Nom: Mike, Sexe: Homme, Etat civil: Célibataire]
Personne: [Nom: Bobby, Sexe: Homme, Etat civil: Célibataire]

Simple ou Femmes: 
Personne: [Nom: Robert, Sexe: Homme, Etat civil: Célibataire]
Personne: [Nom: Diana, Sexe: Femme, Célibataire]
Personne: [Nom: Mike, Sexe: Homme, Etat civil: Célibataire]
Personne: [Nom: Bobby, Sexe: Homme, Etat civil: Célibataire]
Personne: [Nom: Laura, Sexe: Femme, État civil: Marié]