Java -Filtermodus (Filter-/Kriterienmuster)
Filtermuster oder Kriterienmuster ist ein Entwurfsmuster, mit dem Entwickler unterschiedliche Standards verwenden können, um eine Gruppe von Objekten zu filtern und diese durch logische Operationen entkoppelt zu verbinden. Diese Art von Entwurfsmuster ist ein strukturelles Muster, das mehrere Standards kombiniert, um einen einzelnen Standard zu erhalten.
Filtermuster oder Kriterienmuster ist ein Entwurfsmuster, mit dem Entwickler unterschiedliche Standards verwenden können, um eine Gruppe von Objekten zu filtern und diese durch logische Operationen entkoppelt zu verbinden. Diese Art von Entwurfsmuster ist ein strukturelles Muster, das mehrere Standards kombiniert, um einen einzelnen Standard zu erhalten.
erreichen
Wir erstellen ein Personobjekt, eine Kriterienschnittstelle und eine Entitätsklasse, die die Schnittstelle implementiert, um die Liste der Personenobjekte zu filtern. Kriterium, verwendet unsere Demo -Klasse Kriterienobjekte, um Listen von Personenobjekten basierend auf verschiedenen Standards und Kombinationen zu filtern.
Schritt 1
Erstellen Sie eine Klasse, um den Standard für diese Klasse anzuwenden.
Person.java
public class Person {privater Zeichenfolge Name; privates String -Geschlecht; privates String ehelichstatus; öffentliche Person (String -Name, String -Geschlecht, String moveStatus) {this.name = name; this.Geper = Geschlecht; this.maritalStatus = mainstatus; } public String getName () {return name; } public String getGerTer () {Return Gender; } public String getMaritalStatus () {return mareitalStatus; }}Schritt 2
Erstellen Sie eine Schnittstelle für Kriterien.
Kriterien.java
importieren java.util.list; Öffentliche Schnittstellenkriterien {publiclist <Person> MeetCriteria (List <Person> Personen);}Schritt 3
Erstellen Sie eine Entitätsklasse, die die Kriterienschnittstelle implementiert.
Criteriamale.java
Import Java.util.ArrayList; Import Java.util.List; öffentliche Klasse Criteriamale implementiert Kriterien {@Override öffentliche Liste <Person> MeetCriteria (Liste <Person> Personen) {List <Person> malepersons = new ArrayList <Person> (); für (Person Person: Personen) {if (person.getGender (). EqualSignoreCase ("männlich")) {Malepersons.Add (Person); }} Return Malepersons; }}Kriterien.java
Import Java.util.ArrayList; Import Java.util.List; öffentliche Klassenkriterien implementiert Kriterien {@Override öffentliche Liste <Person> MeetCriteria (Liste <Person> Personen) {List <Person> femalePersons = new ArrayList <Person> (); für (Person: Person: Personen) {if (person.getGender (). EqualSignoreCase ("weiblich") {FemalePersons.add (Person); }} return femalePersons; }}Criteriasingle.java
Import Java.util.ArrayList; Import Java.util.List; öffentliche Klassenkriterien implementiert Kriterien {@Override öffentliche Liste <Person> MeetCriteria (Liste <Person> persons) {list <Person> SinglePersons = new ArrayList <Person> (); für (Person: Person: Personen) {if (person.getmaritalStatus (). EqualSignoreCase ("Single")) {SinglePersons.Add (Person); }} return SinglePersons; }}Und Criteria.java
importieren java.util.list; öffentliche Klasse und Kriterien implementieren Kriterien {private Kriterienkriterien; Private Kriterien Andere Kriterien; public andcriteria (Kriterienkriterien, Kriterien Andere Kriterien) {this.criteria = Kriterien; this.OtherCriteria = Andere Kriterien; } @Override öffentliche Liste <Person> MeetCriteria (List <Person> persons) {list <Person> firstCriteriApsons = criteria.MeetCriteria (Personen); return OtherCriteria.MeetCriteria (FirstCriteriapsons); }}Orciteria.java
importieren java.util.list; öffentliche Klasse Orciteria implementiert Kriterien {private Kriterienkriterien; Private Kriterien Andere Kriterien; öffentliche Orcriteria (Kriterienkriterien, Kriterien Sonstige Kriterien) {this.criteria = Kriterien; this.OtherCriteria = Andere Kriterien; } @Override öffentliche Liste <Person> MeetCriteria (List <Person> persons) {list <Person> firstCriteriaItems = criteria.MeetCriteria (Personen); Liste <Person> Andere CRITRIAItEMS = OtherCriteria.MeetCriteria (Personen); für (Person Person: Andere CRiteriaItems) {if (! firstCriteriaItems.Contains (Person)) {firstCriteriaItems.Add (Person); }} return firstCriteriaItems; }}Schritt 4
Verwenden Sie unterschiedliche Kriterien (Kriterien) und ihre Kombination, um Listen von Personenobjekten zu filtern.
Kriterien
öffentliche Klassenkriterien kriterien {public static void main (String [] args) {list <Person> persons = new ArrayList <Person> (); persons.add (neue Person ("Robert", "männlich", "Single"); persons.add (neue Person ("John", "männlich", "verheiratet"); persons.add (neue Person ("Laura", "weiblich", "verheiratet"); persons.add (neue Person ("Diana", "weiblich", "Single"); persons.add (neue Person ("Mike", "männlich", "Single"); persons.add (neue Person ("Bobby", "männlich", "Single"); Kriterien männlich = new Criteriamale (); Kriterien weiblich = neuer Kriterien (); Kriterien Single = new Criteriasingle (); Kriterien Singlemale = neu und Kriterien (Single, männlich); Kriterien SingleOrfemale = new orcriteria (Single, weiblich); System.out.println ("Männer:"); Printpersons (male.Meetcriteria (Personen)); System.out.println ("/nfemales:"); Printkörper (weiblich.MeetCriteria (Personen)); System.out.println ("/nsingle männlich:"); printporsons (Singlemale.MeetCriteria (Personen)); System.out.println ("/nsingle oder Frauen:"); printporons (SingleOrfemale.MeetCriteria (Personen)); } public static void printpersons (list <person> persons) {für (Person Person: persons) {system.out.println ("Person: [Name:" + Person.getName () + ", Geschlecht:" + Person.getGender () + ", Ehegeratis:" + person.getmaritalStatus () + "]"); }}}Schritt 5
Überprüfen Sie die Ausgabe.
Males: Person : [ Name : Robert, Gender : Male, Marital Status : Single ]Person : [ Name : John, Gender : Male, Marital Status : Married ]Person : [ Name : Mike, Gender : Male, Marital Status : Single ]Person : [ Name : Bobby, Gender : Male, Marital Status : Single ]Females: Person : [ Name : Laura, Gender : Female, Marital Status : Married ]Person : [ Name : Diana, Gender : Female, Marital Status : Single ] Einzelne Männer: Person: [Name: Robert, Geschlecht: Männlich, Familienstand: Single] Person: [Name: Mike, Geschlecht: Männlich, Familienstatus: Single] Person: [Name: Bobby, Geschlecht: Männlich, männlich, männlich: Single] Single oder Frauen: Person: [Name: Robert: Geschlecht, Mann: Single. Familienstand: Single] Person: [Name: Bobby, Geschlecht: Männlich, Familienstand: Single] Person: [Name: Laura, Geschlecht: Weiblich, Familienstand: verheiratet]
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!