..


ลิงก์ผู้สนับสนุน

AOP -- ผู้รับมอบฉันทะ

ก่อนที่จะย้ายเพื่อดูว่าคุณสร้างขึ้นด้วย pointcuts ด้านคำแนะนำและพวกเขาก็เป็นสิ่งสำคัญมากที่จะเข้าใจวิธีการที่ผู้รับมอบฉันทะ
พร็อกซี่คืออะไรมากกว่าการ wrapper (ภาชนะ) ที่ประกอบด้วยวัตถุและทำให้วัตถุทั้งหมด medodi สาธารณะ เมื่อคุณเรียกใช้ method เกี่ยวกับพร็อกซี่การปฏิบัติจริงของวิธีการที่จะมอบหมายให้ห่อวัตถุที่ทำให้สถานะของพร็อกซี่ทั้งหมดโปร่งใสกับผู้ใช้
พร็อกซี่จะใช้สปริง AOP ในการดำเนินการกว่าการมอบหมายง่ายยังจัดการกับคำแนะนำการจัดการต่างๆ

เราเข้าใจว่าวิธีการที่ไม่ใช้พร็อกซี่หนึ่งที่ง่ายมาก ครั้งแรกที่เราสร้างอินเตอร์เฟซที่เรียบง่าย :






 {สาธารณะ SimpleInterface อินเตอร์เฟซ



	

  



 F1 ประชาชนเป็นโมฆะ ();



	

  



 F2 เป็นโมฆะสาธารณะ ();







 }



แม้เราจะสร้างการดำเนินงานที่ง่าย :





 SimplePojo {class สาธารณะดำเนินการ SimpleInterface





  



 @ Override



  



 F1 ประชาชนเป็นโมฆะ () {



    



 System.out.println ("F1");



    



 F2 ();



  



 }





  



 @ Override



  



 F2 เป็นโมฆะสาธารณะ () {



    



 System.out.println ("F2");



  



 }







 }



เราทราบว่าวิธีการที่ F1 () ทำให้การเรียกร้องให้ F2 ()
Let's ตอนนี้สร้างพร็อกซี่ที่เป็นแล้วกล่าวว่าเราต้องสร้างภาชนะของวัตถุและการแสดงทั้งหมดของวิธีการของมันแล้วพร็อกซี่ที่จะใช้อินเตอร์เฟซและจากนั้นมอบหมาย SimpleInterface วิธีการทั้งหมดที่เรียกไปที่วัตถุจริง :






 SimpleProxy {class สาธารณะดำเนินการ SimpleInterface





  



 ภาคเอกชน SimpleInterface มอบหมาย;





  



 สาธารณะ SimpleProxy (SimpleInterface มอบหมาย) {



    



 super ();



    



 this.delegate = มอบหมาย;



  



 }





  



 @ Override



  



 F1 ประชาชนเป็นโมฆะ () {



    



 System.out.println ("F1 Delegating ()");



    



 delegate.f1 ();



  



 }





  



 @ Override



  



 F2 เป็นโมฆะสาธารณะ () {



    



 System.out.println ("Delegating F2 ()");



    



 delegate.f2 ();



  



 }







 }



ในตัวอย่างง่ายๆของเราพร็อกซี่ไม่สามารถพิมพ์ข้อความที่กล่าวว่าเป็นตัวแทนการเรียก

ตอนนี้เราได้สร้างการทดสอบหลักเพื่อดูว่าพร็อกซี่ของเรา :






 สาธารณะระดับหลัก {





  



 ประชาชนเป็นโมฆะคง main (String args []) {



    



 / / สร้างอินสแตนซ์ของถั่ว

 

    



 SimpleInterface realBean SimplePojo = ใหม่ ();





    



 ถั่ว System.out.println ("##### #####");



    



 realBean.f1 ();



    



 System.out.println ();



    



 realBean.f2 ();





    



 System.out.println ();





    



 / / สร้าง instance ของพร็อกซี่



    



 SimpleInterface SimpleProxy = พร็อกซี่ใหม่ (ใหม่ SimplePojo ());





    



 พร็อกซี่ System.out.println ("##### #####");



    



 proxy.f1 ();



    



 System.out.println ();



    



 proxy.f2 ();



  



 }







 }



บล็อกแรกของรหัสให้ผลลัพธ์ต่อไปนี้ :





 ##### ##### ถั่ว







 F1







 F2









 F2



ตอนนี้หนึ่งจะคาดหวังว่าการส่งออกของบล็อกที่สองคือต่อไปนี้ :





 พร็อกซี่ ##### #####







 F1 delegating ()







 F1







 delegating F2 ()







 F2









 delegating F2 ()







 F2



ไม่ Invce! ผลลัพธ์จะเป็นดังนี้





 พร็อกซี่ ##### #####







 F1 delegating ()







 F1







 F2









 delegating F2 ()







 F2



ในฐานะที่เราสามารถมองเห็นเรียกว่าวิธีการที่ F1 () เป็นวิธีการที่ F2 () ไม่ผ่านพร็อกซี่เพราะเมื่อคุณได้มอบหมายการดำเนินการของวิธีการที่ไปที่วัตถุจริงทุกสายภายในจะไม่ถูกดัก โดยการมอบฉันทะ
ด้วยเหตุนี้คุณไม่สามารถสร้างคำแนะนำเกี่ยวกับวิธีการที่ถูกเรียกจากวิธีการอื่น ๆ ของวัตถุหรือมากกว่าสามารถถูกสร้างขึ้นเฉพาะในกรณีที่วิธีการเหล่านี้จะถูกใช้โดยวัตถุภายนอกเพราะมิฉะนั้นคำแนะนำจะไม่ทำงาน
Proxy

แผนที่สปริง Java
E - Learning
ลินุกซ์ (หลักสูตร) ลินุกซ์ (หลักสูตร)
คู่มือที่สมบูรณ์ในระบบเปิดแหล่งที่มา จาก 49 €
PHP (หลักสูตร) PHP (หลักสูตร)
หลักสูตรเต็มสำหรับการสร้างเว็บไซต์แบบไดนามิก จาก 49 €
Ruby และ Ruby on Rails (หลักสูตร) Ruby และ Ruby on Rails (หลักสูตร)
สร้างโปรแกรมซอฟต์แวร์และเว็บด้วยทับทิมและ ร. จาก 39 €
ลิงก์ผู้สนับสนุน