Latest web development tutorials

Pola Filter

Modus Filter (Filter Pola) atau mode standar (Kriteria Pola) adalah model desain yang memungkinkan pengembang untuk menggunakan kriteria yang berbeda untuk menyaring satu set objek, melalui operasi logis untuk memisahkan cara untuk menghubungkan mereka. Ini jenis pola desain skema struktural, yang menggabungkan lebih kriteria memperoleh standar tunggal.

realisasi

Kami akan membuatOrangobjek, antarmuka kelas Kriteria entitas dan implementasi antarmuka untuk menyaring daftarOrangobjek.CriteriaPatternDemo,kelas demonstrasi kami menggunakan benda-bendaKriteria,berdasarkan berbagai kriteria dan kombinasinya untuk menyaring daftarOrangobjek.

Pola Filter diagram UML

Langkah 1

Membuat kelas, pada penerapan standar di kelas ini.

Person.java

public class Person {
	
   private String nama;
   swasta String gender;
   swasta String maritalStatus;

   Orang publik (String nama, String jenis kelamin, String maritalStatus) {
      this.name = nama;
      this.gender = gender;
      this.maritalStatus = maritalStatus;		
   }

   public String getName () {
      Nama kembali;
   }
   public String getGender () {
      kembali gender;
   }
   public String getMaritalStatus () {
      kembali maritalStatus;
   }	
}

Langkah 2

Buat sebuah antarmuka untuk standar (Kriteria).

Criteria.java

import java.util.List;

Kriteria antarmuka publik {
   Daftar public <Person> meetCriteria (Daftar <Person> orang);
}

Langkah 3

Membuat kelas entitas menyadariKriteriaantarmuka.

CriteriaMale.java

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

public class CriteriaMale mengimplementasikan Kriteria {

   @ Override
   Daftar public <Person> meetCriteria (Daftar <Person> orang) {
      Daftar <Person> malePersons = new ArrayList <Person> (); 
      untuk (Person person: orang) {
         jika (person.getGender (). equalsIgnoreCase ( "MALE")) {
            malePersons.add (orang);
         }
      }
      kembali malePersons;
   }
}

CriteriaFemale.java

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

public class CriteriaFemale mengimplementasikan Kriteria {

   @ Override
   Daftar public <Person> meetCriteria (Daftar <Person> orang) {
      Daftar <Person> femalePersons = new ArrayList <Person> (); 
      untuk (Person person: orang) {
         jika (person.getGender (). equalsIgnoreCase ( "FEMALE")) {
            femalePersons.add (orang);
         }
      }
      kembali femalePersons;
   }
}

CriteriaSingle.java

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

public class CriteriaSingle mengimplementasikan Kriteria {

   @ Override
   Daftar public <Person> meetCriteria (Daftar <Person> orang) {
      Daftar <Person> singlePersons = new ArrayList <Person> (); 
      untuk (Person person: orang) {
         jika (person.getMaritalStatus (). equalsIgnoreCase ( "TUNGGAL")) {
            singlePersons.add (orang);
         }
      }
      kembali singlePersons;
   }
}

AndCriteria.java

import java.util.List;

public class AndCriteria mengimplementasikan Kriteria {

   Kriteria Kriteria swasta;
   Kriteria swasta otherCriteria;

   publik AndCriteria (kriteria Kriteria, Kriteria otherCriteria) {
      this.criteria = kriteria;
      this.otherCriteria = otherCriteria; 
   }

   @ Override
   Daftar public <Person> meetCriteria (Daftar <Person> orang) {
      Daftar <Person> firstCriteriaPersons = criteria.meetCriteria (orang);		
      kembali otherCriteria.meetCriteria (firstCriteriaPersons);
   }
}

OrCriteria.java

import java.util.List;

public class OrCriteria mengimplementasikan Kriteria {

   Kriteria Kriteria swasta;
   Kriteria swasta otherCriteria;

   OrCriteria publik (kriteria Kriteria, Kriteria otherCriteria) {
      this.criteria = kriteria;
      this.otherCriteria = otherCriteria; 
   }

   @ Override
   Daftar public <Person> meetCriteria (Daftar <Person> orang) {
      Daftar <Person> firstCriteriaItems = criteria.meetCriteria (orang);
      Daftar <Person> otherCriteriaItems = otherCriteria.meetCriteria (orang);

      untuk (Person person: otherCriteriaItems) {
         if (! firstCriteriaItems.contains (orang)) {
	        firstCriteriaItems.add (orang);
         }
      }	
      kembali firstCriteriaItems;
   }
}

Langkah 4

Menggunakan kriteria yang berbeda (Kriteria) dan kombinasinya untuk menyaring daftarOrangobjek.

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

Langkah 5

Verifikasi output.

laki-laki: 
Orang: [Nama: Robert, Jenis Kelamin: Laki-laki, Status Pernikahan: Lajang]
Orang: [Nama: John, Jenis Kelamin: Laki-laki, Status Perkawinan: Menikah]
Orang: [Nama: Mike, Jenis Kelamin: Laki-laki, Status Pernikahan: Lajang]
Orang: [Nama: Bobby, Jenis Kelamin: Laki-laki, Status Pernikahan: Lajang]

betina: 
Orang: [Nama: Laura, Jenis Kelamin: Perempuan, Status Perkawinan: Menikah]
Orang: [Nama: Diana, Jenis Kelamin: Perempuan, Status Pernikahan: Lajang]

Pria lajang: 
Orang: [Nama: Robert, Jenis Kelamin: Laki-laki, Status Pernikahan: Lajang]
Orang: [Nama: Mike, Jenis Kelamin: Laki-laki, Status Pernikahan: Lajang]
Orang: [Nama: Bobby, Jenis Kelamin: Laki-laki, Status Pernikahan: Lajang]

Satu Atau Wanita: 
Orang: [Nama: Robert, Jenis Kelamin: Laki-laki, Status Pernikahan: Lajang]
Orang: [Nama: Diana, Jenis Kelamin: Perempuan, Status Pernikahan: Lajang]
Orang: [Nama: Mike, Jenis Kelamin: Laki-laki, Status Pernikahan: Lajang]
Orang: [Nama: Bobby, Jenis Kelamin: Laki-laki, Status Pernikahan: Lajang]
Orang: [Nama: Laura, Jenis Kelamin: Perempuan, Status Perkawinan: Menikah]