وصف وضع الوكيل
ملاحظة: كما يوحي الاسم ، فإنه هو استخدام فئة واحدة لاستبدال فئة أخرى لتنفيذ وظائف الطريقة. هذا النمط يشبه إلى حد ما الوضع الزخرفي. الفرق هو أن وضع الوكيل يحل محل العميل لتهيئة فئة كائن الوكيل ، بينما يتم تنفيذ الوضع الزخرفي عن طريق الواجهة أو المرجع إلى معلمة الديكور الأولي.
في اللغة الديناميكية الموجهة نحو الكائنات ، يلعب وضع الوكيل دور التحكم في فئة الوكيل وتعديله ، كما يلعب دورًا مخفيًا ومحميًا كاملًا لفئة الوكيل ؛ تتم تهيئة فئة الوكيل بشكل غير مباشر ولا تسمى إلا عندما نحتاجها ؛
وصف المشهد:
مثال شائع جدًا على استئجار منزل. يرغب المستأجرون في استئجار منزل ويريد المالك استئجار المنزل ، لكن ليس لدى المستأجر ولا المالك الكثير من الوقت لإيجاد منزل أو الانتظار حتى يرى شخص ما المنزل في المنزل ، لذلك يذهبون للعثور على وكيل عقاري معًا. المالك يعهد الغرفة إلى الوكالة لاستئجار وبيع. عندما يكون هناك شخص مناسب ، فإن الوكيل سيأخذ الغرفة لرؤيته ويدفع المال لاستئجاره ، حتى يستأجر المالك الغرفة ؛ يعهد المستأجر المنزل إلى الوكالة لمساعدة موقع الغرفة المطلوبة من قبل الوكالة. بعد أن يجد الوكيل المستأجر ، سيدفع الاثنان المال لاستئجاره ، حتى يتمكن المستأجر من استئجاره إلى المكان الذي يعيش فيه ؛
رمز مصدر مثيل
اتبع المثال أعلاه لتحقيقه ؛
1. فئة تأجير المالك ؛
نسخة الكود كما يلي:
وظيفة fangdong () {
this.room = "اسم الغرفة" ؛
}
fangdong.prototype.chuzu = function () {
console.log ('Randholder Rents Room:' + this.room) ؛
}
2. فئة الوكيل الوسيطة:
نسخة الكود كما يلي:
وظيفة Proxy () {
this.fangdong = new fangdong () ؛
}
proxy.prototype.chuzu = function () {
this.fangdong.chuzu () ؛
console.log ('Carry Agency Adees بعد التأجير ") ؛
}
3. كيفية استخدام:
نسخة الكود كما يلي:
// يسأل المستأجر من وكيل للمساعدة في العثور على منزل ؛
var proxy = New Proxy () ؛
proxy.chuzu () ؛
انظر إلى الاستخدام أعلاه. فئة الوكيل غير متوفرة على الإطلاق على جانب العميل. ما عليك سوى استخدام فئة الوكيل ، والتي يمكن استخدامها بشكل جيد في سيناريو حيث يجب حماية بعض عمليات منطق العمل ؛ يمكن استخدام وضع الوكيل بشكل جيد في فئة وكيل يحتاج إلى حماية ؛
تعليمات أخرى
مثل وضع الديكور ، يعكس وضع الوكيل أيضًا مبدأ التفكير الموجهة للكائنات في الانفتاح على التمديد والإغلاق ؛
وضع الوكيل ، يمكنك استخدام واجهات أو فئات مجردة لتنظيم واجهات مشتركة: (ما يلي يوفر وضع الوكيل Java)
1. طريقة تجريدية الطبقة التجريدية ؛
نسخة الكود كما يلي:
البيت الجمهور المجرى البيت {
باطلة عامة ملخص chuzu () ؛
}
الطبقة العامة فانغدونغ يمتد المنزل {
غرفة سلسلة خاصة = "اسم الغرفة" ؛
@تجاوز
الفراغ العام chuzu () {
System.out.println (Room) ؛
}
}
تمديد وكيل الطبقة العامة المنزل {
خاص فانغدونغ فانغدونغ ؛
الوكيل العام () {
this.fangdong = new Hangdong () ؛
}
@تجاوز
الفراغ العام chuzu () {
this.fandong.chuzu () ؛
system.out.println ("رسوم وكالة الدفع بعد الإيجار") ؛
}
}
//يستخدم
منزل البيت = الوكيل الجديد () ؛
house.chuzu () ؛
2. طريقة الواجهة:
نسخة الكود كما يلي:
Interface House {
الفراغ العام chuzu () ؛
}
الطبقة العامة Fangdong تنفذ المنزل {
غرفة سلسلة خاصة = "اسم الغرفة" ؛
@تجاوز
الفراغ العام chuzu () {
System.out.println (Room) ؛
}
}
يقوم وكيل الطبقة العامة بتنفيذ البيت {
خاص فانغدونغ فانغدونغ ؛
الوكيل العام () {
this.fangdong = new Hangdong () ؛
}
@تجاوز
الفراغ العام chuzu () {
this.fandong.chuzu () ؛
system.out.println ("رسوم وكالة الدفع بعد الإيجار") ؛
}
}
//يستخدم
منزل البيت = الوكيل الجديد () ؛
house.chuzu () ؛