يتضمن وكيل Java الوكيل الديناميكي jdk والوكيل cglib هنا نتحدث فقط عن الوكيل الديناميكي JDK الذي يستخدم بشكل أساسي آلية انعكاس Java (أي حزمة java.lang.reflect).
المبدأ هو (المطربين والمديرين أمثلة):
إنشاء واجهة عامة، مثل: واجهة المغني العامة Singer؛
استخدم فئة معينة لتنفيذ الواجهة، على سبيل المثال: Jay Chou، وهو مغني، لذلك يقوم بتنفيذ فئة Singer، فئة MySinger تنفذ Singer
قم بإنشاء فئة وكيل، وهو الوسيط هنا يحتاج إلى تنفيذ فئة InvocationHandler وإعادة كتابة طريقة الاستدعاء بحيث عندما يحدث شيء ما وتريد العثور على Jay Chou (فئة محددة)، يجب عليك أولاً الانتقال إلى الوسيط (فئة الوكيل). ) للتعامل معها، يقرر الوكيل ما إذا كان سيلتقي بك (سواء كان سيتم تنفيذ هذه الطريقة).
1. واجهة المغني
مجردة عامة باطلة الغناء () ؛
سلسلة مجردة عامة s ()؛
}
//ربط
ربط الكائن العام (الهدف الهدف) {
this.target=target;
// يجب إعادة الوكيل
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
//مرة أخرى
استدعاء الكائن العام (وكيل الكائن، طريقة الطريقة، وسيطة الكائن [])
رميات قابلة للرمي {
كائن o =null;
System.out.println("بدء المعاملة");
System.out.println("أذونات القاضي");
o =method.invocation(target, args);//طريقة التنفيذ
System.out.println("إنهاء المعاملة");
العودة س؛
}
}