وضع الوكيل
يسمى نموذج الوكيل بالوكيل أو البديل باللغة الإنجليزية ، ويمكن ترجمة كلاهما على أنه "وكيل" باللغة الصينية. يعني ما يسمى الوكيل أن شخصًا أو مؤسسة ما يتخذ إجراءً نيابة عن شخص آخر أو مؤسسة أخرى. في بعض الحالات ، لا يريد العميل أو لا يمكنه الإشارة مباشرة إلى كائن ، ويمكن أن يعمل كائن الوكيل كوسيط بين العميل والكائن الهدف
أ. دور الموضوع التجريدي
يعلن عن وجود واجهة مشتركة بين موضوعات حقيقية وكيل ، بحيث يمكن استخدام أي موضوع حقيقي.
دور الوكيل:
يحتوي دور موضوع الوكيل على إشارات إلى مواضيع حقيقية ، بحيث يمكن تشغيل كائنات الموضوع الحقيقية في أي وقت ؛ يوفر دور موضوع الوكيل نفس الواجهة مثل دور الموضوع الحقيقي ، بحيث يمكن أن يحل محل الموضوع الحقيقي للتحكم في المراجع إلى مواضيع حقيقية في أي وقت ، وهو مسؤول عن إنشاء كائنات موضوع حقيقية (وحذف كائنات الموضوع الحقيقية) عند الحاجة ؛ عادةً ما يؤدي دور الوكيل عملية قبل أو بعد تمرير مكالمة العميل إلى الموضوع الحقيقي ، بدلاً من مجرد تمرير المكالمة إلى كائن الموضوع الحقيقي.
دور موضوع حقيقي
يحدد الكائن الحقيقي الذي يمثله دور الوكيل
على سبيل المثال:
إعادة إنشاء وضع الوكيل الديناميكي
الوكيل الديناميكي JDK
فئة وكيل اعتراض الفئة المستهدفة
ملخص: 1. نظرًا لأن فئة الوكيل التي تم إنشاؤها بواسطة JDKProxy تنفذ الواجهة ، يتم تضمين جميع الطرق في الفئة المستهدفة في فئة الوكيل.
2. جميع طرق فئة الوكيل التي تم إنشاؤها تعترض جميع طرق الفئة المستهدفة. محتوى طريقة الاستدعاء في التقاطع هو بالضبط تكوين كل طريقة لفئة الوكيل.
3. يجب أن توجد واجهات عند استخدام JDKProxy.
4. يمكن للمعلمات الثلاثة في طريقة Invoke الوصول إلى واجهة برمجة التطبيقات للطريقة المدعومة ، ومعلمات الطريقة المدعوين ، ونوع الإرجاع للطريقة المتصلة بالفئة الهدف.
إعادة إنشاء مع وضع الوكيل الديناميكي JDK
إعادة بناء معاملات السبات باستخدام وضع الوكيل الديناميكي JDK
CGLIB الوكيل الديناميكي
1. CGLIB هي مكتبة فئة قوية وتوليد الكود عالية الجودة. يمكن أن تمدد فصول Java وتنفيذ واجهات Java أثناء وقت التشغيل.
2. استخدم CGLIB لإنشاء فئة بالوكالة كفئة فرعية للفئة المستهدفة.
3. لا يلزم وجود واجهة لإنشاء فئات وكيل باستخدام CGLIB
4. فئة الوكيل التي تم إنشاؤها بواسطة CGLIB تتجاوز طرق الفئة الأصل.
5. محتوى طريقة التقاطع في التقاطع هو بالضبط هيئة الجسم في فئة الوكيل.
إعادة إنشاء معاملات السبات باستخدام وضع الوكيل الديناميكي CGLIB
ربيع طريقتان بالوكالة
1. إذا كان الكائن المستهدف ينفذ عدة واجهات ، فإن Spring يستخدم JDK's Java.lang.reflect.proxy proxy.
المزايا: نظرًا لوجود واجهات ، فإن النظام مقترن بشكل أكثر فضفاضة. العيوب: إنشاء واجهات لكل فئة مستهدفة.
2. إذا كان الكائن الهدف لا ينفذ أي واجهة ، فإن Spring يستخدم مكتبة CGLIB لإنشاء فئة فرعية من الكائن الهدف.
المزايا: نظرًا لأن فئة الوكيل والفئة المستهدفة موروثة ، فليس هناك حاجة لوجود واجهة.
العيوب: نظرًا لعدم وجود واجهة مستخدمة ، فإن اقتران النظام ليس جيدًا مثل الوكيل الديناميكي باستخدام JDK.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.