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.
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]