سؤال

في نمط الأمر:

لماذا لا ينبغي أن يكون المشارك العميل هو نفس فئة المشارك في المتفجر؟ هل هناك سيناريوهات محتملة عندما يمكن أن يكون مشارك العميل ومشارك الدافع هو نفس الفصل؟

هل كانت مفيدة؟

المحلول

السبب الأكبر هو أنه ينتهك مبدأ المسؤولية الفردية. لدى مشارك العميل والمحفوظات على كلاهما مسؤوليات فردية وتغيير إلى واحد سيؤثر على الآخر.

نصائح أخرى

1) المسؤولية الرئيسية عن العميل هي تحديد المواصفة المناسبة للمدفاد والمستقبل وأكائنات الأوامر ثم بدء إجراء التنفيذ في المكان والوقت المناسبين.

يمكن، على سبيل المثال، أن يكون مثل هذا

class Client {

...

invoker.executeCommand()

...

}

2) المسؤولية الرئيسية عن المدافع هي استدعاء أساليب قيادة واحدة أو أكثر من كائن القيادة بأمر معين.

علي سبيل المثال،

class Invoker {

...
command.command1();
command.command2();
command.command3();
...

}

دعونا ننظر، على سبيل المثال، java.awt.event.keylistener فئة. لديها ثلاث طرق تم استدعاء بالترتيب التالي:

keyPressed(KeyEvent e)
keyTyped(KeyEvent e)
keyReleased(KeyEvent e)

يمكن أن تكون فئة Invoer لهذا المستمع:

class KeyInvocation {
    KeyListener listener;

    void invokeKey(EventObject e) {
        listener.keyPressed(e);
        listener.keyTyped(e);
        listener.keyReleased(e);
    }
}

في هذه الأثناء، يجب على فئة العميل المناسبة InventOpject EventObject، KeyListener و Keyinvocation ثم تنفيذ طريقة في المكان المناسب والوقت المناسب.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top