"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > يأمر

يأمر

تم النشر بتاريخ 2024-11-04
تصفح:498

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

هذا أيضًا يتبع المبدأ الثابت لـ OCP

لنأخذ مثالاً على سوق الأوراق المالية، حيث يكون السهم طلبًا يجب شراؤه أو بيعه (

command)، يتم تغليف هذا السهم تحت أمر، ثم يتم إرسال هذا الأمر إلى الوسيط (المستدعي) )، يقوم الوسيط بعد ذلك بتحليل الأمر لتحديد ما إذا كان هذا الأمر هو BuyOrder أو SellOrder، وفي النهاية يتم تنفيذ أمر الشراء أو البيع(تنفيذ الأمر/الطلب)

command

المخزون (طلب)


سهم الفئة العامة { اسم سلسلة خاصة؛ كمية كثافة العمليات الخاصة؛ الأسهم العامة (سلسلة ن، كثافة العمليات ف) { this.name = n; this.quantity = q; } بيع الفراغ العام () { System.out.println("[تم تنفيذ أمر بيع الكمية "الكمية" للمخزون "اسم"]"); } شراء الفراغ العام () { System.out.println("[تم تنفيذ أمر شراء الكمية "الكمية" للمخزون "اسم"]"); } }
public class Stock {
    private String name ;
    private int quantity;
    public Stock(String n, int q){
        this.name = n;
        this.quantity = q;
    }
    public void sell(){
        System.out.println("[Sell order of quantity "  quantity  " for stock " name  " has been performed]");
    }
    public void buy(){
        System.out.println("[Buy order of quantity "  quantity  " for stock " name  " has been performed]");
    }
}
الأمر (الطلب مغلف داخل كائن كأمر)


أمر الواجهة العامة { تنفيذ الفراغ العام ()؛ }
public class Stock {
    private String name ;
    private int quantity;
    public Stock(String n, int q){
        this.name = n;
        this.quantity = q;
    }
    public void sell(){
        System.out.println("[Sell order of quantity "  quantity  " for stock " name  " has been performed]");
    }
    public void buy(){
        System.out.println("[Buy order of quantity "  quantity  " for stock " name  " has been performed]");
    }
}
الأوامر الملموسة


الطبقة العامة BuyOrder تنفذ الأمر { أسهم خاصة؛ أمر الشراء العام (الأسهم){ this.stock = s; } @تجاوز تنفيذ الفراغ العام () { شراء () ؛ } } الطبقة العامة SellOrder تنفذ الأمر { أسهم خاصة؛ أمر البيع العام (الأسهم){ this.stock = s; } @تجاوز تنفيذ الفراغ العام () { Stock.sell(); } }
public class Stock {
    private String name ;
    private int quantity;
    public Stock(String n, int q){
        this.name = n;
        this.quantity = q;
    }
    public void sell(){
        System.out.println("[Sell order of quantity "  quantity  " for stock " name  " has been performed]");
    }
    public void buy(){
        System.out.println("[Buy order of quantity "  quantity  " for stock " name  " has been performed]");
    }
}
الوسيط (المستدعي الذي يختار الكائن المناسب الذي يمكنه التعامل مع الأمر/الأمر)


import java.util.ArrayList; import java.util.List; وسيط الطبقة العامة { قائمة أوامر ؛ الوسيط العام (){ Orders = new ArrayList(); } public void addOrder(Order e){ Orders.add(e); } طلب مكان باطل عام () { من أجل(الطلب الإلكتروني: الطلبات){ e.execute(); } Orders.clear();// بمجرد تقديم الوسيط لجميع الطلبات، يجب إفراغ القائمة } }
public class Stock {
    private String name ;
    private int quantity;
    public Stock(String n, int q){
        this.name = n;
        this.quantity = q;
    }
    public void sell(){
        System.out.println("[Sell order of quantity "  quantity  " for stock " name  " has been performed]");
    }
    public void buy(){
        System.out.println("[Buy order of quantity "  quantity  " for stock " name  " has been performed]");
    }
}
رئيسي


الطبقة العامة الرئيسية { الفراغ الثابت العام الرئيسي(String args[]){ //طلبات مخزون المخزون = مخزون جديد("TCS",20); مخزون المخزون 2 = مخزون جديد("Infy",10); // الطلبات ملفوفة داخل الكائن (الترتيب) كأوامر أمر الطلب 1 = طلب الشراء الجديد (المخزون)؛ أمر الطلب 2 = طلب بيع جديد (المخزون 2)؛ // يتم إرسال الطلب إلى الوسيط وسيط الوسيط = وسيط جديد ()؛ Broker.addOrder(order1); Broker.addOrder(order2); // يقرر الوسيط في وقت التشغيل الكائن المناسب للأمر المرجعي // بمعنى آخر، يقرر المدعوون الكائن المناسب ويمكنهم التعامل مع هذا الأمر/الأمر Broker.placeOrder(); } }
public class Stock {
    private String name ;
    private int quantity;
    public Stock(String n, int q){
        this.name = n;
        this.quantity = q;
    }
    public void sell(){
        System.out.println("[Sell order of quantity "  quantity  " for stock " name  " has been performed]");
    }
    public void buy(){
        System.out.println("[Buy order of quantity "  quantity  " for stock " name  " has been performed]");
    }
}
الإخراج:


[تم تنفيذ أمر شراء الكمية 20 لمخزون TCS] [تم تنفيذ أمر بيع الكمية 10 لمخزون Infy]
public class Stock {
    private String name ;
    private int quantity;
    public Stock(String n, int q){
        this.name = n;
        this.quantity = q;
    }
    public void sell(){
        System.out.println("[Sell order of quantity "  quantity  " for stock " name  " has been performed]");
    }
    public void buy(){
        System.out.println("[Buy order of quantity "  quantity  " for stock " name  " has been performed]");
    }
}

النقاط الرئيسية لهذا النمط

    يتبع مبادئ OCP وSIP الصلبة.
  • نوع الأمر معروف في وقت التشغيل
بيان الافراج تم نشر هذه المقالة على: https://dev.to/prashantrmishra/command-p16?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3