دعنا نتحدث عن وضع الوكيل Java معك
1. وكيل ثابت
1.1 يجب أن يحافظ كل من الوكيل الوكيل الثابت وفئة الوكيل على واجهة مشتركة.
الواجهة العامة iuserdao {void save () ؛}1.2 فئة بروكسي ، كائن مستهدف
الفئة العامة userDao تنفذ iuserdao {Override public void save () {system.out.println ("----- تم حفظ البيانات !!! ------") ؛ }}1.3 كائنات وكيل
الفئة العامة userDaoProxy تنفذ iuserdao {// استلام وحفظ الكائن الهدف الخاص iuserdao هدف ؛ userDaOproxy العامة (Iuserdao Target) {this.target = target ؛ } Override public void save () {system.out.println ("Start Transaction ...") ؛ Target.Save () ؛ // طريقة لتنفيذ كائن الهدف system.out.println ("إرسال المعاملة ...") ؛ }}1.4 فئة الاختبار
تطبيق الفئة العامة {public static void main (string [] args) {// الكائن الهدف iuserdao target = new userDao () ؛ // proxy iuserdao proxy = new userDaOproxy (target) ؛ proxy.save () ؛ // تنفيذ طريقة الوكيل}} 2. العامل الديناميكي
2.1 وبالمثل ، يحتاج الوكيل الديناميكي أيضًا إلى إكمال واجهة. (على غرار أعلاه)
2.2 الكائن الهدف هو نفسه.
2.3 يختلف فقط في الكائنات الوكيل
فئة عامة proxyfactory {// الحفاظ على هدف كائن خاص الكائن الخاص ؛ proxyfactory (الهدف الكائن) {this.target = target ؛ }. System.out.println ("ابدأ معاملة") ؛ }}2.4 فئة الاختبار
تطبيق الفئة العامة {public static void main (string [] args) {// الكائن الهدف iuserdao target = new userDao () ؛ system.out.println (target.getClass ()) ؛ // إنشاء كائن بروكسي للكائن الهدف iuserdao proxy = (iuserdao) proxyfactory جديد (Target) .getproxyinstance () ؛ system.out.println (proxy.getClass ()) ؛ // تنفيذ طريقة [proxy object] proxy.save () ؛ }} 3. Cglib Proxy
3.1CGLIB Proxy لا يحتاج إلى إكمال الواجهة ، بل يحتاج فقط إلى كتابة فئة الفئة والوكالة ليكونوا وكيل. الوكيل هنا هو نفس 1.2 ، لذلك لم يعد مكتوبًا.
3.2 فئة الوكيل مختلفة. عند استخدام وضع وكيل CGLIB ، تحتاج إلى الرجوع إلى حزمة الإطار الأساسي في الربيع.
طبقة PROXYFACTORY PROCAL PROXYFACTORY MethodInterceptor {// الحفاظ على هدف الكائن الخاص الكائن الخاص ؛ proxyfactory (الهدف الكائن) {this.target = target ؛ } // إنشاء كائن وكيل للكائن الهدف العام getProxyInstance () {// 1. Tool Class Enhancer en = New Onphancer () ؛ // 2. قم بتعيين الفئة الأصل en.setSuperClass (Target.getClass ()) ؛ // 3. قم بتعيين وظيفة رد الاتصال en.setCallback (هذا) ؛ // 4. إنشاء فئة فرعية (كائن وكيل) إرجاع en.create () ؛ } override اعتراض الكائن العام (Object OBJ ، طريقة الطريقة ، الكائن [] args ، methodproxy proxy) يلقي رمي {system.out.println ("ابدأ معاملة ...") ؛ // طريقة لتنفيذ كائن الكائن الهدف returnvalue = method.invoke (الهدف ، args) ؛ System.out.println ("إرسال المعاملة ......") ؛ إرجاع القيمة ؛ }}3.3 فئة الاختبار
تطبيق الفئة العامة {public static void main (string [] args) {// target object userDao target = new userDao () ؛ system.out.println (target.getClass ()) ؛ // proxy Object userDao proxy = (userDao) New ProxyFactory (target) .getproxyinstance () ؛ system.out.println (proxy.getClass ()) ؛ // طريقة لتنفيذ Proxy Object Proxy.save () ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.