Latest web development tutorials

pattern filtro

Modalità filtro (Pattern filtro) o in modalità standard (Criteri Pattern) è un modello di progettazione che consente agli sviluppatori di utilizzare diversi criteri per filtrare una serie di oggetti, attraverso operazioni logiche di disaccoppiare modo per collegarli. Questo tipo di modello di progettazione di uno schema strutturale, che unisce più criteri ottenere uno standard unico.

realizzazione

Creeremo unoggetto Person,interfaccia di classe Criteria entità e implementazione dell'interfaccia per filtrare l'elenco degli oggettiPerson.CriteriaPatternDemo, le nostre classi dimostrazione utilizzare oggettiCriteri,sulla base di diversi criteri e le loro combinazioni per filtrare l'elenco degli oggettiPerson.

modello del filtro diagramma UML

fase 1

Creare una classe, sull'applicazione delle norme in questa classe.

Person.java

Persona public class {
	
   private String name;
   private String genere;
   private String StatoCivile;

   Persona pubblico (String name, String genere, String StatoCivile) {
      this.name = nome;
      this.gender = genere;
      this.maritalStatus = StatoCivile;		
   }

   public String getName () {
      Nome tornare;
   }
   public String getGender () {
      tornare genere;
   }
   public String getMaritalStatus () {
      tornare StatoCivile;
   }	
}

fase 2

Creare un'interfaccia per standard (Criteri).

Criteria.java

import java.util.List;

Criteri di interfaccia pubblico {
   Elenco pubblico <persona> meetCriteria (List <persona> persone);
}

fase 3

Creare classi di entità realizzati interfacciacriteri.

CriteriaMale.java

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

public class CriteriaMale implementa criteri {

   @Override
   Elenco pubblico <persona> meetCriteria (List <persona> persone) {
      List <persona> malePersons = new ArrayList <Person> (); 
      per (persona Persona: Persone) {
         if (person.getGender (). equalsIgnoreCase ( "maschio")) {
            malePersons.add (persona);
         }
      }
      tornare malePersons;
   }
}

CriteriaFemale.java

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

public class CriteriaFemale implementa criteri {

   @Override
   Elenco pubblico <persona> meetCriteria (List <persona> persone) {
      List <persona> femalePersons = new ArrayList <Person> (); 
      per (persona Persona: Persone) {
         if (person.getGender (). equalsIgnoreCase ( "femmina")) {
            femalePersons.add (persona);
         }
      }
      tornare femalePersons;
   }
}

CriteriaSingle.java

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

public class CriteriaSingle implementa criteri {

   @Override
   Elenco pubblico <persona> meetCriteria (List <persona> persone) {
      List <persona> singlePersons = new ArrayList <Person> (); 
      per (persona Persona: Persone) {
         if (person.getMaritalStatus (). equalsIgnoreCase ( "SINGLE")) {
            singlePersons.add (persona);
         }
      }
      tornare singlePersons;
   }
}

AndCriteria.java

import java.util.List;

public class AndCriteria implementa criteri {

   Criteri Criteri privati;
   Criteri privati ​​otherCriteria;

   pubblico AndCriteria (criteri Criteri, Criteri otherCriteria) {
      this.criteria = criteri;
      this.otherCriteria = otherCriteria; 
   }

   @Override
   Elenco pubblico <persona> meetCriteria (List <persona> persone) {
      List <persona> firstCriteriaPersons = criteria.meetCriteria (persone);		
      tornare otherCriteria.meetCriteria (firstCriteriaPersons);
   }
}

OrCriteria.java

import java.util.List;

public class OrCriteria implementa criteri {

   Criteri Criteri privati;
   Criteri privati ​​otherCriteria;

   OrCriteria pubblici (criteri Criteri, Criteri otherCriteria) {
      this.criteria = criteri;
      this.otherCriteria = otherCriteria; 
   }

   @Override
   Elenco pubblico <persona> meetCriteria (List <persona> persone) {
      List <persona> firstCriteriaItems = criteria.meetCriteria (persone);
      List <persona> otherCriteriaItems = otherCriteria.meetCriteria (persone);

      per (persona Persona: otherCriteriaItems) {
         if (! firstCriteriaItems.contains (persona)) {
	        firstCriteriaItems.add (persona);
         }
      }	
      tornare firstCriteriaItems;
   }
}

fase 4

Utilizzando diversi criteri (criteri) e loro combinazioni per filtrare l'elenco degli oggettiPerson.

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

fase 5

Verifica uscita.

maschi: 
Persona: [Nome: Robert, Sesso: Maschio, Stato civile: Single]
Persona: [Nome: John, Sesso: Maschio, Stato civile: Sposato]
Persona: [Nome: Mike, Sesso: Maschio, Stato civile: Single]
Persona: [Nome: Bobby, Sesso: Maschio, Stato civile: Single]

Le femmine: 
Persona: [Nome: Laura, Genere: Femminile, Stato civile: Sposato]
Persona: [Nome: Diana, Genere: Femminile, Stato civile: Single]

I maschi singoli: 
Persona: [Nome: Robert, Sesso: Maschio, Stato civile: Single]
Persona: [Nome: Mike, Sesso: Maschio, Stato civile: Single]
Persona: [Nome: Bobby, Sesso: Maschio, Stato civile: Single]

Singolo o femmine: 
Persona: [Nome: Robert, Sesso: Maschio, Stato civile: Single]
Persona: [Nome: Diana, Genere: Femminile, Stato civile: Single]
Persona: [Nome: Mike, Sesso: Maschio, Stato civile: Single]
Persona: [Nome: Bobby, Sesso: Maschio, Stato civile: Single]
Persona: [Nome: Laura, Genere: Femminile, Stato civile: Sposato]