โหมดตัวแทน
โมเดลพร็อกซีเรียกว่าพร็อกซีหรือตัวแทนเป็นภาษาอังกฤษและทั้งคู่สามารถแปลเป็น "ตัวแทน" เป็นภาษาจีนได้ พร็อกซีที่เรียกว่าบุคคลหนึ่งหรือสถาบันหนึ่งดำเนินการในนามของบุคคลอื่นหรือสถาบันอื่น ในบางกรณีลูกค้าไม่ต้องการหรือไม่สามารถอ้างถึงวัตถุโดยตรงและวัตถุพร็อกซีสามารถทำหน้าที่เป็นตัวกลางระหว่างลูกค้าและวัตถุเป้าหมาย
A. บทที่เป็นบทคัดย่อบทบาท
ประกาศอินเทอร์เฟซทั่วไประหว่างหัวข้อจริงและพร็อกซีเพื่อให้สามารถใช้หัวข้อจริงใด ๆ ได้
B. บทบาทพร็อกซี:
บทบาทชุดรูปแบบตัวแทนมีการอ้างอิงถึงหัวข้อจริงเพื่อให้วัตถุหัวข้อจริงสามารถดำเนินการได้ตลอดเวลา บทบาทชุดรูปแบบตัวแทนให้อินเทอร์เฟซเดียวกันกับบทบาทหัวข้อจริงเพื่อให้สามารถแทนที่หัวข้อจริงเพื่อควบคุมการอ้างอิงไปยังหัวข้อจริงได้ตลอดเวลาและรับผิดชอบในการสร้างวัตถุหัวข้อจริง (และลบวัตถุหัวข้อจริง) เมื่อจำเป็น; บทบาทตัวแทนมักจะดำเนินการก่อนหรือหลังผ่านการเรียกลูกค้าไปยังหัวข้อจริงแทนที่จะส่งผ่านการโทรไปยังวัตถุหัวข้อจริง
C. บทบาทธีมจริง
กำหนดวัตถุจริงที่แสดงโดยบทบาทพร็อกซี
ตัวอย่างเช่น:
refactoring ด้วยโหมดพร็อกซีแบบไดนามิก
พร็อกซีไดนามิก JDK
เทรนด์คลาสพร็อกซีคลาส
สรุป: 1. เนื่องจากคลาสพร็อกซีที่สร้างโดย JDKProxy ใช้อินเทอร์เฟซวิธีทั้งหมดในคลาสเป้าหมายจะรวมอยู่ในคลาสพร็อกซี
2. วิธีการทั้งหมดของคลาสพร็อกซีที่สร้างขึ้นจะสกัดกั้นวิธีการทั้งหมดของคลาสเป้าหมาย เนื้อหาของวิธีการเรียกใช้ในตัวดักเป็นองค์ประกอบของแต่ละวิธีของคลาสพร็อกซี
3. อินเทอร์เฟซจะต้องมีอยู่เมื่อใช้ JDKProxy
4. พารามิเตอร์สามตัวในวิธีการเรียกใช้สามารถเข้าถึง API ของวิธีที่เรียกว่าพารามิเตอร์ของวิธีที่เรียกว่าและประเภทการส่งคืนของวิธีการที่เรียกว่าของคลาสเป้าหมาย
refactoring ด้วยโหมดพร็อกซีไดนามิก JDK
การสร้างธุรกรรมไฮเบอร์เนตใหม่โดยใช้โหมดพร็อกซีไดนามิก JDK
พร็อกซีแบบไดนามิก CGLIB
1. CGLIB เป็นไลบรารีคลาสการสร้างรหัสคุณภาพสูงและมีประสิทธิภาพสูง มันสามารถขยายคลาส Java และใช้อินเตอร์เฟส Java ในระหว่างการรันไทม์
2. ใช้ CGLIB เพื่อสร้างคลาสพร็อกซีเป็นคลาสย่อยของคลาสเป้าหมาย
3. ไม่จำเป็นต้องใช้อินเทอร์เฟซในการสร้างคลาสพร็อกซีโดยใช้ cglib
4. คลาสพร็อกซีที่สร้างขึ้นโดย CGLIB แทนที่วิธีการของคลาสแม่
5. เนื้อหาของวิธีการสกัดกั้นใน interceptor เป็นวิธีการที่ร่างกายในคลาสพร็อกซี
การปรับเปลี่ยนธุรกรรมไฮเบอร์เนตโดยใช้โหมดพร็อกซีแบบไดนามิก CGLIB
สปริงสองวิธีพร็อกซี
1. หากวัตถุเป้าหมายใช้หลายอินเทอร์เฟซสปริงใช้ Java.lang.lang.reflect.proxy Class Proxy
ข้อดี: เนื่องจากมีอินเทอร์เฟซระบบจึงเข้ากันอย่างหลวมมากขึ้น ข้อเสีย: สร้างอินเทอร์เฟซสำหรับแต่ละคลาสเป้าหมาย
2. หากวัตถุเป้าหมายไม่ได้ใช้อินเทอร์เฟซใด ๆ สปริงจะใช้ไลบรารี CGLIB เพื่อสร้างคลาสย่อยของวัตถุเป้าหมาย
ข้อดี: เนื่องจากคลาสพร็อกซีและคลาสเป้าหมายได้รับการสืบทอดจึงไม่จำเป็นต้องมีอินเทอร์เฟซอยู่
ข้อเสีย: เนื่องจากไม่มีการใช้อินเทอร์เฟซการมีเพศสัมพันธ์ของระบบจึงไม่ดีเท่าพร็อกซีแบบไดนามิกโดยใช้ JDK
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น