..
ก่อนที่จะย้ายเพื่อดูว่าคุณสร้างขึ้นด้วย 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 () ไม่ผ่านพร็อกซี่เพราะเมื่อคุณได้มอบหมายการดำเนินการของวิธีการที่ไปที่วัตถุจริงทุกสายภายในจะไม่ถูกดัก โดยการมอบฉันทะ

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