Tutorial Pola Filter Terbaik Pada tahun 2024, Dalam tutorial ini Anda dapat mempelajari realisasi,
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.
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.
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; } }
Buat sebuah antarmuka untuk standar (Kriteria).
Criteria.java
import java.util.List; Kriteria antarmuka publik { Daftar public <Person> meetCriteria (Daftar <Person> orang); }
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; } }
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() +" ]"); } } }
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]