تقنية السلسلة العامة للطريقة الزائدة
https://softwareengineering.stackexchange.com/questions/204557
-
29-09-2020 - |
سؤال
عملية مشتركة في JavaScript هي استبدال طريقة كائن مع واحدة جديدة بينما لا تزال تتصل بالطريقة الأصلية.غالبا ما يتم ذلك مثل هذا:
giveacodicetagpre.أود إنشاء وظيفة أداة مساعدة لطريقة كائن محددة تعالج جزء التسلسل بحيث لا يحتاج المستخدم إلى أن تشعر بالقلق حيال ذلك.أحد الخيارات هو استخدام التصميم أعلاه، حيث يتم لف كل وظيفة مضافة في دالة جديدة تستدعي الوظيفة السابقة.خيار آخر هو إنشاء صفيف من الوظائف وجعل طريقة الكائن تتكرر فقط فوق الصفيف، استدعاء كل وظيفة بدوره.
giveacodicetagpre.في هذه المرحلة، لا أستطيع أن أقرر الطريقة التي يجب استخدامها منذ أن أشعر بالمفاضلات لكل منها حولها.لذلك سؤالي هنا هو: أي من هذه الطريقة أفضل (أكثر طبيعية، أو مقبولة أو أسرع) أو هل هناك طريقة أخرى تتحسن على كل من هذه؟
المحلول
هذا السؤال مشابه تماما، أو على الأقل يأتي إلى سؤال مماثل هنا: https://stackoverflow.com/Questions/660337 < / a>
نصائح أخرى
What you are trying to do is a JavaScript version of call super, which is described as a code smell by Martin Fowler.
I would suggest instead that you either
- Contain the "super" object instead of inheriting from it.
Use template method, such as below
templateMethod = function () { baseMethod(); if (overrideMethod) { overrideMethod(); } };
Other objects would call templateMethod. The overrideMethod is where child objects would have their code.