تمرير الطلبات من العميل إلى كائن ما ، مما يتيح لك وضع معلمة العميل بطلبات مختلفة. يستخدم لدلول "طلب السلوك" و "تطبيق السلوك" ، يمكن تحقيق اقتران فضفاض بين الاثنين من أجل التكيف مع التغييرات. افصل العوامل المتغيرة وغير المتغيرة.
1. الدور
يأمر
يحدد واجهة الأمر ويعلن طريقة التنفيذ.
concretecommand
كائن تطبيق واجهة الأوامر هو تطبيق "افتراضي" ؛ عادةً ما يحمل المتلقي ويدعو وظيفة المتلقي لإكمال العملية ليتم تنفيذها بواسطة الأمر.
المتلقي
جهاز الاستقبال ، الكائن الذي ينفذ الأمر حقًا. قد يصبح أي فئة جهاز استقبال طالما أنه يمكن تنفيذ الوظائف المقابلة التي يتطلبها الأمر.
Invoker
مطلوب كائن الأمر لتنفيذ الطلب ، وعادة ما يحتفظ بكائن الأوامر ويمكنه الاحتفاظ بالعديد من كائنات الأوامر. هذا هو المكان الذي يقوم فيه العميل بالفعل بتوجيه الأمر ويتطلب من الأمر إجراء العملية المقابلة ، مما يعني أنه يعادل استخدام إدخال كائن الأوامر.
عميل
قم بإنشاء كائن أمر معين وضبط جهاز الاستقبال لكائن الأمر. لاحظ أن هذا ليس عميلًا بالمعنى التقليدي الخاص بنا ، ولكنه يقوم بتجميع كائن الأوامر والمستقبل. ربما ، سيكون من الأفضل استدعاء هذا العميل مجمعًا ، لأن العميل الذي يستخدم حقًا تنفيذ تنفيذ الأمر من Invoker.
2. المزايا
3. العيوب <br /> قد يتسبب استخدام وضع الأوامر في أن تحتوي بعض الأنظمة على الكثير من فئات الأوامر المحددة. نظرًا لأن فئة الأوامر المحددة مطلوبة لكل أمر ، فقد تتطلب بعض الأنظمة عددًا كبيرًا من فئات الأوامر المحددة ، والتي ستؤثر على استخدام وضع الأوامر.
رابعا. الموقف المعمول به
5. التطبيق <br /> يتضمن المحاكاة أوامر الطاقة والإغلاق والتغيير لتشغيل التلفزيون. الرمز كما يلي
// واجهة لتنفيذ أمر الواجهة العامة {void execute () ؛ }. public void turnon () {system.out.println ("televisino is on.") ؛ } public void tuttloff () {system.out.println ("التلفزيون هو OFF.") ؛ } public void changechannel (int channel) {this.currentChannel = Channel ؛ System.out.println ("قناة TV هي" + قناة +) ؛ }} // إيقاف تشغيل Command Concretecommand Public Commandon تنفذ الأمر {private tv mytv ؛ Public Commandon (TV TV) {mytv = tv ؛ } public void execute () {mytv.turnon () ؛ }} // إيقاف تشغيل Command Concretecommand Public Commandoff يبرز الأمر {private tv mytv ؛ commandoff / public (تلفزيون) {mytv = tv ؛ } public void execute () {mytv.turnoff () ؛ }} // command command command concretecommand public commandchange تنفذ الأمر {private tv mytv ؛ قناة int الخاصة ؛ commandchange public (TV TV ، int Channel) {mytv = tv ؛ this.channel = Channel ؛ } public void execute () {mytv.Changechannel (Channel) ؛ }} // يمكن اعتباره عنصر تحكم عن بعد Invoker Classe Public Control {Private Command OnCommand ، OffCommand ، ChangeChannel ؛ التحكم العام (أمر ON ، OFF ، قناة الأوامر) {onCommand = ON ؛ Offcommand = OFF ؛ ChangeChannel = Channel ؛ } public void turnon () {onCommand.execute () ؛ } public void tuttloff () {OffCommand.execute () ؛ } public void changechannel () {Changechannel.execute () ؛ }} // اختبار فئة الفئة العميل العميل العميل {public static void main (string [] args) {// command ulteiver receiver tv mytv = new tv () ؛ // command on command concretecommond on = new commandon (myTV) ؛ // command Off Command Commandoff Off = New Commandoff (myTV) ؛ . // Commun Control Object Control Control = New Control (On ، Off ، Channel) ؛ // power-on control.turnon () ؛ // Switch Channel Control.Changechannel () ؛ // أغلق Control.turnoff () ؛ }} نتائج التنفيذ
Televisino يعمل.
الآن القناة التلفزيونية 2
التلفزيون متوقف.
6. ملخص
1. جوهر وضع الأوامر هو تغليف الأمر وفصل المسؤولية عن إصدار الأمر ومسؤولية تنفيذ الأمر.
2. كل أمر هو عملية: يصدر الطرف طلب طلبًا ، يتطلب إجراء عملية ؛ يتلقى الطرف المتلقي الطلب ويؤدي العملية.
3. يسمح وضع الأوامر للطرف المطلوب أن يكون مستقلاً عن الطرف المتلقي ، بحيث لا يتعين على الطرف الطالب معرفة واجهة الطرف التي تتلقى الطلب ، ولا يجب أن تعرف كيف تم استلام الطلب ، وما إذا كان ومتى تم تنفيذ العملية.
4. وضع الأوامر يجعل الطلب نفسه كائنًا ، والذي يمكن تخزينه وتمريره مثل الكائنات الأخرى.
5. مفتاح وضع الأوامر هو تقديم واجهة أمر مجردة ، وبرامج المرسل لواجهة الأمر التجريدي. لا يمكن سوى ربط الأوامر المحددة التي تنفذ واجهة الأوامر التجريدية بالمستقبل.
ما سبق هو مقدمة مفصلة لنمط تصميم قيادة Java ، وآمل أن يكون مفيدًا لتعلم الجميع.