intercepting รูปแบบตัวกรอง
intercepting รูปแบบตัวกรอง (intercepting รูปแบบตัวกรอง) สำหรับการขอใบสมัครหรือในการตอบสนองที่จะทำบางก่อน / การประมวลผลการโพสต์ กำหนดตัวกรองและก่อนที่จะร้องขอไปยังโปรแกรมการปฏิบัติของโปรแกรมเป้าหมายในการร้องขอ ฟิลเตอร์สามารถทำ / ตรวจสอบการอนุมัติ / เข้าสู่ระบบหรือการร้องขอการติดตามแล้วขอให้จัดการที่เหมาะสม ต่อไปนี้เป็นนิติบุคคลของรูปแบบการออกแบบนี้
- กรอง (Filter) - กรองก่อนหรือหลังการดำเนินการจัดการคำขอขอให้ดำเนินการบางอย่าง
- ห่วงโซ่กรอง (กรองโซ่) - ห่วงโซ่กรองที่มีจำนวนมากของตัวกรองและการดำเนินงานของฟิลเตอร์เหล่านี้บนเป้าหมายในลำดับที่กำหนดไว้
- เป้าหมาย - เป้าหมายเป็นตัวจัดการขอวัตถุ
- ตัวจัดการตัวกรอง (Filter Manager) - ฟิลเตอร์กรอง Manager และสายโซ่ตัวกรอง
- ไคลเอนต์ (Client) - วัตถุไคลเอ็นต์เพื่อเป้าหมายวัตถุที่จะส่งคำขอ
การสำนึก
เราจะสร้างFilterChain,FilterManager เป้าหมายลูกค้าหมายถึงหน่วยงานที่เป็นวัตถุต่างๆAuthenticationFilterและDebugFilterแทนหน่วยงานฟิลเตอร์
InterceptingFilterDemo เราแสดงให้เห็นถึงการใช้งานของชั้นเรียนลูกค้าที่จะแสดงให้เห็นถึงรูปแบบการออกแบบการสกัดตัวกรอง
ขั้นตอนที่ 1
สร้างตัวกรองการเชื่อมต่อของตัวกรอง
Filter.java
กรองอินเตอร์เฟซที่สาธารณะ { โมฆะสาธารณะรัน (คำขอ String); }
ขั้นตอนที่ 2
สร้างตัวกรองนิติบุคคล
AuthenticationFilter.java
เรียนสาธารณะ AuthenticationFilter ดำเนินกรอง { โมฆะสาธารณะรัน (คำขอ String) { System.out.println ( "คำขอตรวจสอบสิทธิ์:" + คำขอ); } }
DebugFilter.java
เรียนสาธารณะ DebugFilter ดำเนินกรอง { โมฆะสาธารณะรัน (คำขอ String) { System.out.println ( "ล็อกคำขอ:" + คำขอ); } }
ขั้นตอนที่ 3
สร้างเป้าหมาย
Target.java
เป้าหมายระดับสาธารณะ { โมฆะสาธารณะรัน (คำขอ String) { System.out.println ( "การดำเนินการคำขอ:" + คำขอ); } }
ขั้นตอนที่ 4
สร้างห่วงโซ่ตัวกรอง
FilterChain.java
นำเข้า java.util.ArrayList; นำเข้า java.util.List; เรียนสาธารณะ FilterChain { รายการส่วนตัว <กรอง> ฟิลเตอร์ใหม่ = ArrayList <กรอง> (); เป้าหมายของเอกชน โมฆะสาธารณะ addFilter (กรอง Filter) { filters.add (Filter); } โมฆะสาธารณะรัน (คำขอ String) { สำหรับ (กรองกรอง: ฟิลเตอร์) { filter.execute (ขอ); } target.execute (ขอ); } โมฆะสาธารณะ setTarget (เป้าหมายเป้าหมาย) { this.target = เป้าหมาย } }
ขั้นตอนที่ 5
สร้างจัดการตัวกรอง
FilterManager.java
เรียนสาธารณะ FilterManager { FilterChain FilterChain; ประชาชน FilterManager (เป้าหมายเป้าหมาย) { FilterChain = ใหม่ FilterChain (); filterChain.setTarget (เป้าหมาย); } โมฆะสาธารณะ setFilter (กรอง Filter) { filterChain.addFilter (Filter); } โมฆะสาธารณะ filterRequest (ขอ String) { filterChain.execute (ขอ); } }
ขั้นตอนที่ 6
สร้างไคลเอ็นต์ลูกค้า
Client.java
ไคลเอนต์คลาสที่สาธารณะ { FilterManager filterManager; โมฆะสาธารณะ setFilterManager (FilterManager filterManager) { this.filterManager = filterManager; } โมฆะสาธารณะ SendRequest (ขอ String) { filterManager.filterRequest (ขอ); } }
ขั้นตอนที่ 7
ใช้โปรแกรมในการแสดงให้เห็นถึงรูปแบบการออกแบบตัวกรองสกัดกั้น
FrontControllerPatternDemo.java
เรียนสาธารณะ InterceptingFilterDemo { ประชาชนเป็นโมฆะคง main (String args []) { FilterManager filterManager = ใหม่ FilterManager (เป้าหมายใหม่ ()); filterManager.setFilter (AuthenticationFilter ใหม่ ()); filterManager.setFilter (DebugFilter ใหม่ ()); ลูกค้าลูกค้า = ลูกค้าใหม่ (); client.setFilterManager (filterManager); client.sendRequest ( "บ้าน"); } }
ขั้นตอนที่ 8
ตรวจสอบการส่งออก
คำขอตรวจสอบ: หน้าแรก เข้าสู่ระบบบัส: หน้าแรก คำขอดำเนินการ: หน้าแรก