Javaフィルターモード(フィルター/基準パターン)
フィルターパターンまたは基準パターンは、開発者が異なる標準を使用してオブジェクトのグループをフィルタリングし、論理操作を通じて分離された方法でそれらを接続できるようにする設計パターンです。このタイプの設計パターンは構造パターンであり、複数の標準を組み合わせて単一の標準を取得します。
フィルターパターンまたは基準パターンは、開発者が異なる標準を使用してオブジェクトのグループをフィルタリングし、論理操作を通じて分離された方法でそれらを接続できるようにする設計パターンです。このタイプの設計パターンは構造パターンであり、複数の標準を組み合わせて単一の標準を取得します。
成し遂げる
インターフェイスを実装して人オブジェクトのリストをフィルタリングする個人オブジェクト、基準インターフェイス、およびエンティティクラスを作成します。 Criteriapatterndemo、当社のデモクラスは、さまざまな標準と組み合わせに基づいて、個人オブジェクトのリストをフィルタリングするために基準オブジェクトを使用しています。
ステップ1
クラスを作成して、そのクラスに標準を適用します。
person.java
パブリッククラスの人{プライベート文字列名;プライベートストリングジェンダー; Private String MaritalStatus; public Person(文字列名、文字列ジェンダー、文字列maritalstatus){this.name = name; this.gender = gender; this.maritalstatus = maritalstatus; } public string getname(){return name; } public string getGender(){return gender; } public string getMaritalStatus(){return maritalstatus; }}ステップ2
基準のインターフェイスを作成します。
Criteria.java
java.util.listをインポートします。パブリックインターフェイス基準{public list <person> MeetCritiaia(list <person> persons);}ステップ3
基準インターフェイスを実装するエンティティクラスを作成します。
Criteriamale.java
Import java.util.arraylist; Import Java.util.list;パブリッククラスのCriteriamaleは基準を実装しています{@Override public List <serson> meetCriteria(list <serson> persons){list <serpures> malepersons = new arraylist <serson>(); for(人:人){if(person.getGender()。equalsignoreCase( "MALE")){malepersons.add(person); }} malepersonsを返します。 }}Criteriafemale.java
Import java.util.arraylist; Import Java.util.list; Public Class CriteriaFemaleは基準を実装します{@Override public List <Person> MeetCriteria(list <person> persons){list <serson> femalepersons = new arraylist <serson>(); for(人:人){if(person.getGender()。equalsignorecase( "female")){femalepersons.add(person); }} femalepersonsを返します。 }}Criteriasingle.java
Import java.util.arraylist; Import Java.util.list;パブリッククラスのCriteriasingleは基準を実装します{@Override public List <serson> MeetCriteria(list <serson> persons){list <siner> singlePersons = new ArrayList <serson>(); for(person person:persons){if(person.getMaritalStatus()。equalsignOreCase( "single")){singlePersons.add(person); }} singlePersonsを返します。 }}andcriteria.java
java.util.listをインポートします。パブリッククラスと基準は基準を実装しています{民間基準基準。私的基準その他の基準。パブリックおよび基準(基準基準、基準その他の基準){this.criteria = criteria; this.otercriteria = othercriteria; } @override public list <serpures> meetcriteria(list <person> persons){list <person> firstcriteriapersons = criteria.meetcriteraia(persons); return othercoritia.meetcriteria(firstcriteriapersons); }}ORCRITERIA.java
java.util.listをインポートします。パブリッククラスまたは基準は基準を実装します{民間基準基準。私的基準その他の基準。パブリックまたは基準(基準基準、基準その他の基準){this.criteria = criteria; this.otercriteria = othercriteria; } @Override public list <serson> MeetCriteria(list <person> persons){list <person> firstCriteriaItems = criteria.meetcriteria(persons); list <person> othercriteriaitems = othercriteria.meetcriteria(persons); for(person person:otersiteriaitems){if(!firstCriteriaItems.contains(person)){firstCriterIaTems.Add(Person); }} firstCriteriaItemsを返します。 }}ステップ4
異なる基準(基準)とその組み合わせを使用して、個人のオブジェクトのリストをフィルタリングします。
Criteriapatterndemo.java
public class Criteriapatterndemo {public static void main(string [] args){list <serpures> 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"));基準male = new Criteriamale();基準女性= new CriteriaFemale();基準single = new Criteriasingle();基準Singlemale = new andCriteria(単一、男性);基準singleorfemale = newまたはCriteria(単一、女性); system.out.println( "males:"); printPersons(male.meetcriteria(人)); System.out.println( "/nfemales:"); PrintPersons(femal.meetcriteria(人)); system.out.println( "/nsingle males:"); printPersons(singlemale.meetcriteria(人)); system.out.println( "/nsingleまたは雌:"); PrintPersons(sinersorfemale.meetcriteria(人)); } public static void printpersons(list <person> persons){for(person person:persons){system.out.println( "person:[name:" + person.getname() + "、gender:" + person.getgender() + " }}}ステップ5
出力を確認します。
男性:[名前:ロバート、ジェンダー:男性、婚status状況:独身]人:[名前:ジョン、ジェンダー:男性、婚status状況:既婚]人:[名前:マイク、ジェンダー:男性、婚status状況:単一]人:[名前:ボビー、ジェンダー:男性、婚status状態:独身女性] :シングル男性:人:[名前:ロバート、性別:男性、婚status状況:単一]人:[名前:マイク、性別:男性、婚status状況:単一]人:[名前:ボビー、ジェンダー:男性、婚status状況:シングルまたはシングルまたはシングルまたは女性:[名前:ロバート、ジェンダー:男性、婚statusステータス:シングル:マイク:geand: :男性、婚status状況:独身]人:[名前:ボビー、性別:男性、婚status状況:独身]人:[名前:ローラ、性別:女性、婚status状況:既婚]
読んでくれてありがとう、私はそれがあなたを助けることができることを願っています。このサイトへのご支援ありがとうございます!