โหมดตัวกรอง Java (รูปแบบตัวกรอง/เกณฑ์)
รูปแบบตัวกรองหรือรูปแบบเกณฑ์เป็นรูปแบบการออกแบบที่ช่วยให้นักพัฒนาสามารถใช้มาตรฐานที่แตกต่างกันเพื่อกรองกลุ่มวัตถุและเชื่อมต่อพวกเขาในวิธีที่แยกออกจากการดำเนินการเชิงตรรกะ รูปแบบการออกแบบประเภทนี้เป็นรูปแบบโครงสร้างซึ่งรวมมาตรฐานหลายอย่างเพื่อให้ได้มาตรฐานเดียว
รูปแบบตัวกรองหรือรูปแบบเกณฑ์เป็นรูปแบบการออกแบบที่ช่วยให้นักพัฒนาสามารถใช้มาตรฐานที่แตกต่างกันเพื่อกรองกลุ่มวัตถุและเชื่อมต่อพวกเขาในวิธีที่แยกออกจากการดำเนินการเชิงตรรกะ รูปแบบการออกแบบประเภทนี้เป็นรูปแบบโครงสร้างซึ่งรวมมาตรฐานหลายอย่างเพื่อให้ได้มาตรฐานเดียว
ทำให้สำเร็จ
เราจะสร้างวัตถุบุคคลอินเตอร์เฟสเกณฑ์และคลาสเอนทิตีที่ใช้อินเทอร์เฟซเพื่อกรองรายการวัตถุบุคคล Criteriapatterndemo คลาสตัวอย่างของเราใช้วัตถุเกณฑ์ในการกรองรายการของวัตถุบุคคลตามมาตรฐานและชุดค่าผสมต่างๆ
ขั้นตอนที่ 1
สร้างคลาสเพื่อใช้มาตรฐานในคลาสนั้น
person.java
บุคคลชั้นเรียนสาธารณะ {ชื่อสตริงส่วนตัว; เพศสตริงส่วนตัว String Private String Maritalstatus; บุคคลสาธารณะ (ชื่อสตริง, เพศสตริง, สตริง maritalstatus) {this.name = name; this.gender = เพศ; this.maritalstatus = maritalstatus; } สตริงสาธารณะ getName () {ชื่อคืน; } สตริงสาธารณะ getGender () {กลับเพศ; } สตริงสาธารณะ getMaritalStatus () {return maritalstatus; -ขั้นตอนที่ 2
สร้างอินเทอร์เฟซสำหรับเกณฑ์
เกณฑ์. java
นำเข้า java.util.list; เกณฑ์การเชื่อมต่อสาธารณะ {รายการสาธารณะ <Person> MEETCRITERIA (รายการ <Person> บุคคล);}ขั้นตอนที่ 3
สร้างคลาสเอนทิตีที่ใช้อินเทอร์เฟซเกณฑ์
เกณฑ์
นำเข้า java.util.arraylist; นำเข้า java.util.list; เกณฑ์ชั้นเรียนสาธารณะใช้เกณฑ์ {@Override รายการสาธารณะ <Person> MEETCRITERIA (รายการ <person> บุคคล) {รายการ <person> malepersons = new ArrayList <Person> (); สำหรับ (บุคคลบุคคล: บุคคล) {ถ้า (person.getGender (). equalsignorecase ("ชาย")) {malepersons.add (บุคคล); }} ส่งคืน malepersons; -Criteriafemale.java
นำเข้า java.util.arraylist; นำเข้า java.util.list; เกณฑ์ชั้นเรียนสาธารณะใช้เกณฑ์ {@Override รายการสาธารณะ <Person> MEETCRITERIA (รายการ <Person> บุคคล) {รายการ <Person> FEMALEPERSONS = New ArrayList <Person> (); สำหรับ (บุคคลบุคคล: บุคคล) {ถ้า (person.getGender (). equalsignorecase ("หญิง")) {femalepersons.add (บุคคล); }} ส่งคืนเพศหญิง; -Criteriasingle.java
นำเข้า java.util.arraylist; นำเข้า java.util.list; เกณฑ์ชั้นเรียนสาธารณะใช้เกณฑ์ {@Override รายชื่อสาธารณะ <Person> MEETCRITERIA (รายการ <Person> บุคคล) {รายการ <Person> SinglePersons = New ArrayList <Person> (); สำหรับ (บุคคลบุคคล: บุคคล) {ถ้า (person.getMaritalstatus (). equalsignorecase ("single")) {singlepersons.add (บุคคล); }} ส่งคืน singlepersons; -Andcriteria.java
นำเข้า java.util.list; ชั้นเรียนสาธารณะ Andcriteria ใช้เกณฑ์ {เกณฑ์เกณฑ์ส่วนตัว เกณฑ์ส่วนตัวเกณฑ์อื่น ๆ ; Public Andcriteria (เกณฑ์เกณฑ์เกณฑ์อื่น ๆ ) {this.criteria = เกณฑ์; this.othercriteria = อื่น ๆ criteria; } @Override รายชื่อสาธารณะ <Person> MEETCRITERIA (รายการ <person> บุคคล) {รายการ <person> firstcriteriapersons = Criteria.MeetCriteria (บุคคล); กลับมาอีก criteria.meetcriteria (FirstCriteriapersons); -orcriteria.java
นำเข้า java.util.list; ชั้นเรียนสาธารณะ ORCRITERIA ใช้เกณฑ์ {เกณฑ์เกณฑ์ส่วนตัว เกณฑ์ส่วนตัวเกณฑ์อื่น ๆ ; orcriteria สาธารณะ (เกณฑ์เกณฑ์เกณฑ์อื่น ๆ criteria) {this.criteria = เกณฑ์; this.othercriteria = อื่น ๆ criteria; } @Override รายชื่อสาธารณะ <Person> MEETCRITERIA (รายการ <person> บุคคล) {รายการ <person> firstCriteriaItems = Criteria.meetCriteria (บุคคล); รายการ <person> othercriteriaItems = othercriteria.meetcriteria (บุคคล); สำหรับ (บุคคลบุคคล: อื่น ๆ CRITERIAITEMS) {ถ้า (! FIRSTCRITERIAITEMS.CONTAINS (บุคคล)) {FIRSTCRITERIAITEMS.ADD (บุคคล); }} ส่งคืน FirstCriteriaItems; -ขั้นตอนที่ 4
ใช้เกณฑ์ที่แตกต่างกัน (เกณฑ์) และการรวมกันของพวกเขาเพื่อกรองรายการของวัตถุบุคคล
เกณฑ์
เกณฑ์ระดับสาธารณะ Publicaterndemo {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {รายการ <person> บุคคล = ใหม่ arraylist <person> (); Persons.add (คนใหม่ ("Robert", "Male", "Single")); Persons.add (คนใหม่ ("John", "Male", "แต่งงาน")); Persons.add (คนใหม่ ("Laura", "Female", "แต่งงาน")); person.add (คนใหม่ ("ไดอาน่า", "หญิง", "ซิงเกิ้ล")); Persons.add (คนใหม่ ("Mike", "Male", "Single")); Persons.add (คนใหม่ ("Bobby", "Male", "Single")); เกณฑ์ชาย = เกณฑ์ใหม่ (); เกณฑ์หญิง = เกณฑ์ใหม่ (); เกณฑ์เดียว = เกณฑ์ใหม่ (); เกณฑ์ singlemale = ใหม่ Andcriteria (เดี่ยว, ชาย); เกณฑ์ singleorfemale = orcriteria ใหม่ (เดี่ยว, หญิง); System.out.println ("Males:"); printpersons (male.meetcriteria (บุคคล)); System.out.println ("/nfemales:"); printpersons (female.meetcriteria (บุคคล)); System.out.println ("/nsingle males:"); printpersons (singlemale.meetcriteria (บุคคล)); System.out.println ("/nsingle หรือหญิง:"); printpersons (singleorfemale.meetcriteria (บุคคล)); } โมฆะคงที่สาธารณะ printpersons (รายการ <person> บุคคล) {สำหรับ (บุคคล: บุคคล) {system.out.println ("บุคคล: [ชื่อ:" + person.getName () + ", เพศ:" person.getGender () + ", สถานะสมรส:" + person.getMaritalStatus () -ขั้นตอนที่ 5
ตรวจสอบผลลัพธ์
เพศชาย: บุคคล: [ชื่อ: โรเบิร์ต, เพศ: ชาย, สถานะสมรส: เดี่ยว] บุคคล: [ชื่อ: จอห์น, เพศ: ชาย, สถานะสมรส: แต่งงานแล้ว] บุคคล: [ชื่อ: ไมค์, เพศ: ชาย, สถานะสมรส: คนเดียว] สถานะ: เดี่ยว] ชายเดี่ยว: บุคคล: [ชื่อ: โรเบิร์ต, เพศ: ชาย, สถานะการสมรส: เดี่ยว] บุคคล: [ชื่อ: ไมค์, เพศ: ชาย, สถานะการสมรส: เดี่ยว] คน: [ชื่อ: บ๊อบบี้, เพศ: ชาย, สถานะสมรส: เดี่ยว] เพศ: ชายสถานะสมรส: เดี่ยว] บุคคล: [ชื่อ: บ๊อบบี้เพศชาย: ชายสถานะสมรส: เดี่ยว] คน: [ชื่อ: ลอร่าเพศ: หญิงสถานะสมรส: แต่งงานแล้ว]
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!