Latest web development tutorials

وضع الأوامر

وضع الأوامر (نمط القيادة) هو نمط التصميم التي تعتمد على البيانات، وأنه ينتمي إلى نوع من نموذج. قيادة الطلب في شكل حزم في الكائن، وتمريرها إلى كائن الاستدعاء. أبحث كائن دعوة يمكن معالجة الكائن الأمر المناسب ويتم تمرير الأمر إلى الكائن المناسب، الذي ينفذ الأمر.

مقدمة

القصد: تغليف طلب ككائن، بحيث يمكنك استخدام طلبات مختلفة لبالحدود العملاء.

أساسا لحل: في نظام البرمجيات، وسلوك الطالب والسلوك عادة تحقيق علاقة بإحكام، ولكن بعض الحالات، مثل الحاجة إلى إجراء تسجيل التراجع أو إعادة، ومعالجة المعاملات الأخرى، وهذا لا يقاوم المقرونة بإحكام تغييرات التصميم غير المناسب.

متى تستخدم: في بعض الحالات، مثل سلوك "سجل التراجع / إعادة، والمعاملات" والعلاج الأخرى، يمكن لمثل هذه التغييرات لا تقاوم اقتران ضيق غير مناسب.في هذه الحالة، كيف سيكون "سلوك الطالب" و "المنفذ السلوك" الانفصال؟ بمثابة مجموعة من الكائنات المجردة، واقتران فضفاض لا يمكن أن يتحقق بين البلدين.

كيفية إصلاح: تشغيل من قبل المتلقي لاستدعاء المتصل، بالترتيب: المتلقي المتصل → → الأوامر.

رمز مفتاح: تعريف ثلاثة أدوار: 1، تلقى كائن الأمر الحقيقي إعدام 2، 3 القيادة، والأشياء المنادي باستخدام إدخال الأمر

أمثلة التطبيق: الدعامات تحكم ActionServlet 1الأساسية في عمل واحد فقط، أي ما يعادل المنادي، في حين أن طبقة نموذج الطبقة ستكون التطبيقات المختلفة ولها فصول نموذجا مختلفا، أي ما يعادل قيادة ملموس.

المزايا: 1، والنظام يقلل من درجة اقتران.2، أوامر جديدة يمكن أن تضاف بسهولة إلى النظام.

العيوب: وضع الأمر قد يسبب بعض الأنظمة لديها الكثير من الدرجة الأوامر معينة.

السيناريو الاستعمال: أن الأمرالمحلي يمكن استخدام وضع الأوامر، مثل: 1، واجهة المستخدم الرسومية كل زر هو الأوامر. 2، محاكاة CMD.

ملاحظة: يحتاج النظام لدعم التراجع الأوامر (تراجع) وتشغيل عملية الاسترداد (الإعادة)، يمكنك أن تنظر في استخدام وضع الأمر، انظر وضع الأمر الموسع.

تحقيق

بدأنا أول خلق كواجهة الأمرلترتيب،ثم إنشاء فئة طلبالأوراق المالية.كيان والقيادة الطبقاتBuyStockSellStock،بالدفعبتنفيذ واجهة، فإنه سوف يقوم بأداء تجهيز القيادة الفعلية. أنشئت في طبقةوسيطالكائنالدعوة، والتييمكن قبول الطلبات والأوامر.

كائنوسيطباستخدام وضع الأمر، استنادا إلى نوع من الأوامر لتحديد أي اعتراض على أداء الذي يقود.CommandPatternDemo، والطبقاتمظاهرة لدينا باستخدام الطبقةوسيطلإثبات وضع الأوامر.

وضع الأمر UML الرسم البياني

خطوة 1

إنشاء واجهة الأوامر.

Order.java

واجهة النظام العام {
   الفراغ تنفيذ ()؛
}

خطوة 2

إنشاء فئة الطلب.

Stock.java

فئة العمومي سهم {
	
   اسم سلسلة الخاص = "اي بي سي".
   خاصة كمية كثافة العمليات = 10؛

   شراء باطلة العامة () {
      System.out.println ( "أسهم [اسم:" + اسم + "، 
         الكمية: "+ كمية +"] اشترت ")؛
   }
   باطلا بيع العام () {
      System.out.println ( "أسهم [اسم:" + اسم + "، 
         الكمية: "كمية + +"] باعت ")؛
   }
}

خطوة 3

إنشاء فئة كيانترتيبتطبق الواجهة.

BuyStock.java

الطبقة العامة BuyStock تنفذ بالدفع {
   مساهمة خاصة abcStock.

   الجمهور BuyStock (المالية abcStock) {
      this.abcStock = abcStock.
   }

   الفراغ العام تنفيذ () {
      abcStock.buy ()؛
   }
}

SellStock.java

الطبقة العامة SellStock تنفذ بالدفع {
   مساهمة خاصة abcStock.

   SellStock الجمهور (المالية abcStock) {
      this.abcStock = abcStock.
   }

   الفراغ العام تنفيذ () {
      abcStock.sell ()؛
   }
}

خطوة 4

إنشاء المكالمات قيادة الطبقة.

Broker.java

استيراد java.util.ArrayList.
استيراد java.util.List.

   فئة العمومي وسيط {
   قائمة خاصة <الطلب> orderList = جديد ArrayList <الطلب> ()؛ 

   الفراغ العام takeOrder (النظام النظام) {
      orderList.add (الترتيب).		
   }

   placeOrders الفراغ الجمهور () {
      ل(النظام النظام: orderList) {
         order.execute ()؛
      }
      orderList.clear ()؛
   }
}

خطوة 5

استخدام الطبقة وسيط لقبول وتنفيذ الأوامر.

CommandPatternDemo.java

الطبقة العامة CommandPatternDemo {
   (وسائط سلسلة []) العامة ساكنة باطلة الرئيسية {
      الأسهم abcStock = الأوراق المالية الجديد ()؛

      BuyStock buyStockOrder = BuyStock الجديدة (abcStock)؛
      SellStock sellStockOrder = SellStock الجديدة (abcStock)؛

      وسيط وسيط = وسيط جديد ()؛
      broker.takeOrder (buyStockOrder)؛
      broker.takeOrder (sellStockOrder)؛

      broker.placeOrders ()؛
   }
}

خطوة 6

تحقق من الانتاج.

الاسهم [اسم: ABC، الكمية: 10] اشترى
الاسهم [اسم: ABC، الكمية: 10] بيعها