Latest web development tutorials

Wzorzec filtru

Tryb Filter (Filtr wzór) lub tryb standardowy (Kryteria deseń) jest modelem design, który umożliwia programistom stosować różne kryteria filtrowania zestawu obiektów, poprzez operacje logiczne oddzielenie sposób, aby je połączyć. Ten typ konstrukcji wzorca schematu konstrukcyjnego, który łączy wiele kryteriów uzyskania jednolitego standardu.

realizacja

Stworzymyobiektu Person,interfejs klasy podmiot kryteriów oraz implementacji interfejsu filtrować listę obiektówosobą.CriteriaPatternDemo, nasze zajęcia pokazowe używać obiektówkryteriów,w oparciu o różne kryteria, jak i ich kombinacji, aby filtrować listę obiektówosobą.

Filtr wzór diagram UML

Etap 1

Tworzenie klasy, w sprawie stosowania standardów w tej klasie.

Person.java

public class Person {
	
   private String name;
   private String płci;
   prywatne maritalStatus String;

   Osoba publiczna (String name, płeć String, String maritalStatus) {
      this.name = nazwa;
      this.gender = płeć;
      this.maritalStatus = maritalStatus;		
   }

   public String getName () {
      powrót nazwę;
   }
   public String getGender () {
      powrót płeć;
   }
   public String getMaritalStatus () {
      powrót maritalStatus;
   }	
}

Etap 2

Tworzenie interfejsu dla standardowych (kryteria).

Criteria.java

import java.util.List;

Kryteria {public interface
   Lista publicznego <Person> meetCriteria (List <Person> osób);
}

etap 3,

Tworzenie klas encji realizowane interfejskryteriów.

CriteriaMale.java

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

public class CriteriaMale implementuje kryteria {

   @Override
   Lista publicznego <Person> meetCriteria (List <Person> osoby) {
      List <Person> malePersons = new ArrayList <Person> (); 
      (osoba za osobę: osoby) {
         if (person.getGender (). equalsIgnoreCase ( "męski")) {
            malePersons.add (osoba);
         }
      }
      powrót malePersons;
   }
}

CriteriaFemale.java

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

public class CriteriaFemale implementuje kryteria {

   @Override
   Lista publicznego <Person> meetCriteria (List <Person> osoby) {
      List <Person> femalePersons = new ArrayList <Person> (); 
      (osoba za osobę: osoby) {
         if (person.getGender (). equalsIgnoreCase ( "żeńskie")) {
            femalePersons.add (osoba);
         }
      }
      powrót femalePersons;
   }
}

CriteriaSingle.java

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

public class CriteriaSingle implementuje kryteria {

   @Override
   Lista publicznego <Person> meetCriteria (List <Person> osoby) {
      List <Person> singlePersons = new ArrayList <Person> (); 
      (osoba za osobę: osoby) {
         if (person.getMaritalStatus (). equalsIgnoreCase ( "single")) {
            singlePersons.add (osoba);
         }
      }
      powrót singlePersons;
   }
}

AndCriteria.java

import java.util.List;

public class AndCriteria implementuje kryteria {

   prywatne kryteria kryteriów;
   Kryteria otherCriteria prywatne;

   publicznego AndCriteria (kryteria Criteria Kryteria otherCriteria) {
      this.criteria = kryteriów;
      this.otherCriteria = otherCriteria; 
   }

   @Override
   Lista publicznego <Person> meetCriteria (List <Person> osoby) {
      List <Person> firstCriteriaPersons = criteria.meetCriteria (osoby);		
      powrót otherCriteria.meetCriteria (firstCriteriaPersons);
   }
}

OrCriteria.java

import java.util.List;

public class OrCriteria implementuje kryteria {

   prywatne kryteria kryteriów;
   Kryteria otherCriteria prywatne;

   OrCriteria publicznych (kryteria Kryteria kryteria otherCriteria) {
      this.criteria = kryteriów;
      this.otherCriteria = otherCriteria; 
   }

   @Override
   Lista publicznego <Person> meetCriteria (List <Person> osoby) {
      List <Person> firstCriteriaItems = criteria.meetCriteria (osoby);
      List <Person> otherCriteriaItems = otherCriteria.meetCriteria (osoby);

      (osoba za osobę: otherCriteriaItems) {
         if (! firstCriteriaItems.contains (osoba)) {
	        firstCriteriaItems.add (osoba);
         }
      }	
      powrót firstCriteriaItems;
   }
}

Etap 4

Stosując różne kryteria (kryteria) i ich kombinacje, aby filtrować listę obiektówosobą.

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

Etap 5

Sprawdź, czy wyjście.

Mężczyźni: 
Osoba: [Imię i nazwisko: Robert Płeć: Mężczyzna, Stan cywilny: Single]
Osoba: [Imię i nazwisko: Jan Płeć: Mężczyzna, Stan cywilny: żonaty]
Osoba: [Nazwa: Mike, Płeć: Mężczyzna, Stan cywilny: Single]
Osoba: [Nazwa: Bobby, Płeć: Mężczyzna, Stan cywilny: Single]

kobiety: 
Osoba: [Nazwa: Laura, Płeć: Kobieta, Zamężna]
Osoba: [Nazwa: Diana, Płeć: Kobieta, Stan cywilny: Single]

Pojedyncze Mężczyźni: 
Osoba: [Imię i nazwisko: Robert Płeć: Mężczyzna, Stan cywilny: Single]
Osoba: [Nazwa: Mike, Płeć: Mężczyzna, Stan cywilny: Single]
Osoba: [Nazwa: Bobby, Płeć: Mężczyzna, Stan cywilny: Single]

Pojedyncza lub Kobiety: 
Osoba: [Imię i nazwisko: Robert Płeć: Mężczyzna, Stan cywilny: Single]
Osoba: [Nazwa: Diana, Płeć: Kobieta, Stan cywilny: Single]
Osoba: [Nazwa: Mike, Płeć: Mężczyzna, Stan cywilny: Single]
Osoba: [Nazwa: Bobby, Płeć: Mężczyzna, Stan cywilny: Single]
Osoba: [Nazwa: Laura, Płeć: Kobieta, Zamężna]