รูปแบบของห่วงโซ่ความรับผิดชอบเป็นรูปแบบพฤติกรรมของวัตถุ ในโหมดห่วงโซ่ความรับผิดชอบวัตถุจำนวนมากเชื่อมต่อกันโดยการอ้างอิงของวัตถุแต่ละรายการไปยังบ้านถัดไปเพื่อสร้างโซ่ คำขอจะถูกส่งผ่านไปยังห่วงโซ่นี้จนกว่าจะมีวัตถุในห่วงโซ่ตัดสินใจที่จะประมวลผลคำขอ ลูกค้าที่ทำคำขอนี้ไม่ทราบว่าวัตถุใดในห่วงโซ่ในที่สุดจัดการกับคำขอซึ่งช่วยให้ระบบสามารถจัดระเบียบใหม่และกำหนดความรับผิดชอบแบบไดนามิกโดยไม่ส่งผลกระทบต่อลูกค้า
แบบจำลองห่วงโซ่ความรับผิดชอบเป็นหนึ่งในรูปแบบการออกแบบพฤติกรรม จะเข้าใจห่วงโซ่ความรับผิดชอบได้อย่างไร? ห่วงโซ่ความรับผิดชอบสามารถเข้าใจได้ว่าเป็นการเชื่อมต่อวัตถุหลายอย่างในตอนต้นและสิ้นสุด แต่ละโหนดเป็นวัตถุและแต่ละวัตถุสอดคล้องกับตรรกะการประมวลผลที่แตกต่างกันจนกว่าวัตถุจะตอบสนองต่อคำขอการประมวลผลสิ้นสุดลง โมเดลนี้กลายเป็นแบบจำลองห่วงโซ่ความรับผิดชอบ
เราสามารถหาต้นแบบของแบบจำลองห่วงโซ่ความรับผิดชอบในชีวิตได้หรือไม่? มีตัวอย่างมากมาย ตัวอย่างเช่นหากคุณต้องการซื้อบ้านสิ่งแรกคือพนักงานขาย (แอปพลิเคชัน 1) จะได้รับคุณ ถ้าคุณบอกว่าคุณต้องการส่วนลด 3% ไม่มีปัญหา ในเวลานี้พนักงานขายจะมีอำนาจที่จะให้ส่วนลด 3% และพนักงานขาย (แอปพลิเคชัน 1) จะจัดการ ในเวลานี้ชายร่ำรวยมาและบอกว่าเขาต้องการซื้อ 10 หน่วยและขอส่วนลด 5% พนักงานขาย (แอปพลิเคชัน 1) ไม่มีอำนาจที่จะให้ส่วนลด 5% เขาต้องสมัครกับผู้นำที่เหนือกว่าผู้อำนวยการฝ่ายขายและผู้อำนวยการฝ่ายขาย (แอปพลิเคชัน 2) อนุมัติใบสมัคร ในเวลานี้ Xiao Wang สามีแห่งชาติมา Xiao Wang กล่าวว่าเขาซื้ออสังหาริมทรัพย์ทั้งหมดสิบเปอร์เซ็นต์ ในเวลานี้ผู้อำนวยการฝ่ายขาย (เป้าหมาย 2) ไม่มีอำนาจมากนักและต้องสมัครขออนุมัติจาก CEO
กล่าวอีกนัยหนึ่งลูกค้าแต่ละคนจะได้รับพนักงานขาย ลูกค้าเสนอสิทธิ์ที่แตกต่างกันและพนักงานขายส่งมอบให้กับวัตถุต่าง ๆ สำหรับการจัดส่ง ลูกค้าไม่สนใจว่าวัตถุใดจัดการคำขอของเขาซึ่งจะช่วยลดความสัมพันธ์ระหว่างผู้ส่งและผู้รับคำขอ
ด้านล่างนี้เราใช้การอนุมัติค่าใช้จ่ายในการเดินทางเพื่อธุรกิจเป็นตัวอย่างในการใช้รูปแบบห่วงโซ่ความรับผิดชอบต่อไปนี้ก่อนกำหนดระดับความเป็นผู้นำที่เป็นนามธรรม:
แพ็คเกจ com.test.demo; ผู้นำระดับนามธรรมสาธารณะ {ผู้นำที่ได้รับการปกป้อง nexthandler; // ก่อนหน้าความเป็นผู้นำสาธารณะ void handlerRequest (เงิน int) {ถ้า (เงิน <= limit ()) {// selse {ถ้า (nexthandler! = null) {nexthandler.handlerrequest (เงิน); /** การอนุมัติ*/ ตัวจัดการโมฆะนามธรรมสาธารณะ (เงิน int); -นี่คือคลาสนามธรรม ต่อไปนี้สืบทอดผ่านหลายคลาส อันดับแรกชั้นหัวหน้ากลุ่ม:
แพ็คเกจ com.test.demo; ชั้นเรียนสาธารณะ Groupleader ขยายผู้นำ {Public Int Limit () {return 1000; // ระบุว่าหัวหน้าทีมมีหน่วยงานอนุมัติ 1,000 หยวน} โมฆะโมฆะสาธารณะ (เงิน int) {system.out.println ("หัวหน้าทีมอนุมัติ"+เงิน); -หมวดหมู่หัวหน้างาน:
แพ็คเกจ com.test.demo; ผู้อำนวยการระดับสาธารณะขยายผู้นำ {@Override Public Int Limit () {return 5000; } @Override โมฆะสาธารณะตัวจัดการ (เงิน int) {system.out.println ("หัวหน้างานอนุมัติ"+เงิน); -หมวดหมู่ผู้จัดการ:
แพ็คเกจ com.test.demo; ผู้จัดการชั้นเรียนสาธารณะขยายผู้นำ {@Override Public Int Limit () {return 10,000; } @Override โมฆะโมฆะสาธารณะ (เงิน int) {system.out.println ("ผู้จัดการอนุมัติ"+เงิน); -ประเภทบอส:
แพ็คเกจ com.test.demo; CEO ระดับสาธารณะขยายผู้นำ {@Override Public Int Limit () {return integer.max_value; } @Override โมฆะสาธารณะตัวจัดการ (เงิน int) {system.out.println ("CEO อนุมัติ"+เงิน); -ไม่มีข้อ จำกัด สำหรับผู้บังคับบัญชา นี่คือคำจำกัดความของทีมงานทีม Xiao Zhang ที่ยื่นขอเงินคืนการเดินทาง:
แพ็คเกจ com.test.demo; คลาสสาธารณะ Xiaozhang {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {groupleader groupleader = new Groupleader (); ผู้อำนวยการผู้อำนวยการ = ผู้อำนวยการคนใหม่ (); ผู้จัดการผู้จัดการ = ผู้จัดการใหม่ (); CEO CEO = CEO ใหม่ (); Groupleader.Nexthandler = ผู้อำนวยการ; ผู้อำนวยการ NEXTHANDLER = ผู้จัดการ; Manager.NexThandler = CEO; Groupleader.HandlerRequest (50000); Groupleader.HandlerRequest (500); Groupleader.HandlerRequest (5,000); -Xiao Zhang ใช้การทำธุรกรรมสามรายการเช่นหัวหน้าทีม ในเวลานี้ตัวอย่างการดำเนินการมีดังนี้:
เราจะเห็นได้ว่ากองทุนต่าง ๆ ถูกประมวลผลโดยวัตถุต่าง ๆ Xiao Zhang ไม่สนใจว่าใครจะจัดการกับพวกเขา เขาแค่ต้องการค้นหาหัวหน้าทีม นี่คือลักษณะของแบบจำลองห่วงโซ่ความรับผิดชอบ
นี่คือทั้งหมดที่คุณจะแนะนำเนื้อหาที่เกี่ยวข้องในรูปแบบการออกแบบห่วงโซ่ความรับผิดชอบของ Java ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ!