Java Dynamic Agent Pattern Agent: يمثل الدور دورًا آخر لتحقيق وظائف محددة معينة.
على سبيل المثال: العلاقة بين الشركات المصنعة والوسطاء والعملاء عندما يشتري العملاء المنتجات، فإنهم لا يتعاملون مباشرة مع الشركة المصنعة، ولا يعرفون كيف يتم إنتاج المنتجات، ولا يتعامل العملاء إلا مع الوسطاء، ويمكن للوسطاء تعبئة المنتجات ويتم توفير بعض خدمات ما بعد البيع.
يحتوي نمط الوكيل على ثلاثة أدوار: 1. دور الموضوع الملخص 2. دور موضوع الوكيل 3. دور الوكيل الفعلي
دعونا نلقي نظرة على حقيقة الوكيل الثابت.
سآخذ دبابة كمثال.
دور الموضوع الملخص: متحرك
الواجهة العامة المنقولة {
حركة باطلة () ؛
}
الطبقة العامة TanktimeProxy تنفذ المنقولة {
خاص منقول ر؛
عام TanktimeProxy(منقول ر) {
ممتاز()؛
this.t = t;
}
@تجاوز
نقل الفراغ العام () {
long time1 = System.currentTimeMillis();
System.out.println("time1="+time1);
t.move();
long time2 = System.currentTimeMillis();
System.out.println("time2="+time2);
System.out.println("وقت التشغيل هو:"+(time2-time1));
}
}
ينفذ خزان الطبقة العامة المنقولة {
@تجاوز
نقل الفراغ العام () {
System.out.println("تتحرك الدبابة .....");
}
}
الطبقة العامة TestTank {
public static void main(String[] args) {
الخزان t = الخزان الجديد () ؛
نقل متحرك = جديد TanktimeProxy(t);
move.move();
}
}
بعد ذلك أريد إضافة مذكرات قبل وبعد طريقة التحرك () الخاصة بـ TanK:
لا بد لي من كتابة فئة أخرى لتنفيذ هذه الوظيفة:
الطبقة العامة TanklogProxy تنفذ المنقولة {
خاص منقول ر؛
العامة TanklogProxy(منقولة ر) {
ممتاز()؛
this.t = t;
}
@تجاوز
نقل الفراغ العام () {
System.out.println("بدء التحرك .....");
t.move();
System.out.println("نهاية الحركة......");
}
}
الطبقة العامة TestTank {
public static void main(String[] args) {
الخزان t = الخزان الجديد () ؛
نقل متحرك = جديد TanktimeProxy(t);
Moveable move = new TanklogProxy(move);
movet.move();
}
}
إذا كنت أرغب في إضافة المزيد من الوظائف قبل وبعد استدعاء طريقة النقل () في Tank، فهل أحتاج إلى كتابة المزيد من أدوار سمات الوكيل؟ هل هذا سيجعل الكود سمينًا للغاية ويصعب صيانته؟ يمكن استخدامها لحلها؟ الجواب هو نعم، يمكننا إنشاء أدوار سمة الوكيل ديناميكيًا لتوكيل جميع كائنات الوكيل.
وفي نهاية المقال أود أن أشارككم بعض المقولات النكتة من المبرمجين: IBM و Boeing 777
تعد طائرة بوينج 777 أول طائرة تم تصميمها وتصنيعها بالكامل في الواقع الافتراضي للكمبيوتر، باستخدام معدات مقدمة بالكامل من شركة آي بي إم. قبل الرحلة التجريبية، دعا رئيس شركة بوينغ بحماس المدير الفني لشركة IBM للمشاركة في الرحلة التجريبية، لكن المشرف قال: "آه، إنه لشرف عظيم، لكنه عيد ميلاد زوجتي في ذلك اليوم، لذا..."
غضب الرئيس التنفيذي لشركة بوينغ عندما سمع هذا: "أيها الجبان، لم أخبرك بموعد الرحلة التجريبية بعد!"