يقدم
يتم تعريف وضع الأوامر على النحو التالي: يستخدم لتغليف طلب في كائن ، بحيث يمكنك تعليم العميل بطلبات مختلفة ؛ طلبات قائمة الانتظار أو السجل ، وأداء العمليات القابلة للإلغاء. بمعنى آخر ، تم تصميم وضع التغيير لتغليف المكالمة وطلب وتشغيل وظيفة في كائن واحد ، ثم تنفيذ سلسلة من المعالجة على الكائن. بالإضافة إلى ذلك ، يمكن فصل كائن الأمر والكائن المستلم عن طريق استدعاء الكائنات التي تنفذ وظائف محددة.
نص
دعنا نعرض هذا النمط من خلال برنامج شراء المركبات ، أولاً تحديد فئة التشغيل المحددة لشراء المركبات:
نسخة الكود كما يلي:
$ (function () {
var carmanager = {
// طلب المعلومات
requestInfo: function (model ، id) {
إرجاع "معلومات" + نموذج +
"مع ID" + ID + "هو foobar" ؛
} ،
// شراء سيارة
buyvehicle: function (model ، id) {
إرجاع "لقد نجحت في شراء العنصر"
+ ID + '، A' + نموذج ؛
} ،
// تنظيم العرض
reporteviewing: function (model ، id) {
العودة "لقد قمت بنجاح حجز عرض"
+ model + '(' + id + ')' ؛
}
} ؛
}) () ؛
دعونا نلقي نظرة على الرمز أعلاه. نقوم ببساطة بتنفيذ أوامر المدير عن طريق استدعاء وظائف. ومع ذلك ، في بعض الحالات ، لا نريد الاتصال مباشرة بالأساليب داخل الكائن. هذا سيزيد من الاعتماد بين الكائنات. الآن دعنا نوسع هذا Carmanager لقبول أي طلبات معالجة من كائنات Carmanager بما في ذلك النموذج ومعرف السيارة. وفقًا لتعريف نمط الأوامر ، نأمل في تنفيذ مكالمات الوظيفة التالية:
نسخة الكود كما يلي:
carmanager.execute ({commandType: "buyvehicle" ، kpland1: 'ford escort' ، operand2: '453543'}) ؛
وفقًا لهذا المطلب ، يمكننا تنفيذ طريقة carmanager.execute بهذه الطريقة:
نسخة الكود كما يلي:
carmanager.execute = function (command) {
إرجاع carmanager [command.request] (command.model ، command.carid) ؛
} ؛
بعد التحول ، تكون المكالمة أبسط بكثير ، ويمكن تنفيذ المكالمات التالية (بالطبع ، لا تزال هناك حاجة إلى تحسين بعض تفاصيل الاستثناء):
نسخة الكود كما يلي:
carmanager.execute ({request: "recrangeViewing" ، model: 'ferrari' ، carid: '145523'}) ؛
carmanager.execute ({request: "requestInfo" ، model: 'ford mondeo' ، carid: '543434'}) ؛
carmanager.execute ({request: "requestInfo" ، model: 'ford escort' ، carid: '543434'}) ؛
carmanager.execute ({request: "buyvehicle" ، model: 'ford escort' ، carid: '543434'}) ؛
لخص
من الأسهل تصميم وضع الأوامر في قائمة انتظار أمر ، ومن الأسهل حساب الأوامر في السجل عند الحاجة ، ويسمح للطرف الذي يقبل الطلب بتحديد ما إذا كان سيتم تسميته ، ويمكن أيضًا تنفيذ الإلغاء وإعادة ضبط الطلب. علاوة على ذلك ، نظرًا لأن الفئات المحددة المضافة لا تؤثر على الفئات الأخرى ، فمن السهل تنفيذها.
لكن مبدأ التنمية الرشيقة يخبرنا بعدم إضافة وظائف قائمة على التخمين وغير المرغوب فيها بالفعل إلى الرمز. إذا لم تكن متأكدًا مما إذا كان النظام يحتاج إلى وضع أمر ، فيجب ألا تستعجل عمومًا لتنفيذه. في الواقع ، ليس من الصعب تنفيذ هذا الوضع عند الحاجة. من المجدي فقط إعادة تشكيل الكود الأصلي في وضع الأوامر عندما يكون ذلك مطلوبًا حقًا مثل التراجع واستعادة العمليات والوظائف الأخرى.