سؤال

هل هناك شيء مثل بروتوكول واصف بايثون مطبق بلغات أخرى؟يبدو أنها طريقة رائعة لزيادة النمطية/التغليف دون زيادة تنفيذ الفصل المحتوي لديك، لكنني لم أسمع أبدًا عن شيء مماثل في أي لغة أخرى.هل من المحتمل أن تكون غائبة عن اللغات الأخرى بسبب عبء البحث؟

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

المحلول

لم أسمع عن معادل مباشر أيضًا.ربما يمكنك تحقيق نفس التأثير مع وحدات الماكرو، خاصة في لغة مثل Lisp التي تحتوي على وحدات ماكرو قوية للغاية.

لن أتفاجأ على الإطلاق إذا بدأت اللغات الأخرى في دمج شيء مماثل لأنه قوي جدًا.

نصائح أخرى

يتيح لك كل من Ruby وC# إنشاء أدوات وصول بسهولة عن طريق تحديد أساليب getter/setter لسمة ما، كما هو الحال في Python.ومع ذلك، هذا ليس مصممًا ليسمح لك بكتابة التعليمات البرمجية لهذه الأساليب في فئة أخرى بالطريقة التي تسمح بها Python.من الناحية العملية، لست متأكدًا من مدى أهمية هذا الأمر، حيث أنني في كل مرة أرى فيها سمة محددة من خلال بروتوكول الواصف يتم تنفيذها في نفس الفئة.

يحرر:الرتق عسر القراءة (والذي أعني به القراءة الإهمال).لسبب ما، كنت أقرأ دائمًا كلمة "واصف" على أنها "مصمم ديكور" والعكس صحيح، حتى عندما أكون أنا من يكتب كليهما.سأترك مشاركتي كما هي لأنها تحتوي على معلومات صحيحة، وإن كانت معلومات لا علاقة لها بالسؤال على الإطلاق.

مصطلح "مصمم الديكور" نفسه هو في الواقع اسم نمط التصميم الموصوف في كتاب "أنماط التصميم" الشهير.تحتوي مقالة ويكيبيديا على العديد من الأمثلة في لغات البرمجة المختلفة لاستخدام الديكور: http://en.wikipedia.org/wiki/Decorator_pattern

إلا أن المزخرفين في تلك المادة كائنيون التوجه؛لديهم فئات تنفذ واجهة محددة مسبقًا تتيح لفئة أخرى موجودة التصرف بشكل مختلف بطريقة ما، وما إلى ذلك.تعمل أدوات تزيين Python بطريقة وظيفية عن طريق استبدال دالة في وقت التشغيل بوظيفة أخرى، مما يسمح لك بتعديل/استبدال تلك الوظيفة بشكل فعال، وإدراج التعليمات البرمجية، وما إلى ذلك.

يُعرف هذا في عالم Java بالبرمجة الموجهة نحو الجانب، ويتيح لك برنامج التحويل البرمجي AspectJ Java القيام بهذه الأنواع من الأشياء وتجميع كود AspectJ الخاص بك (وهو مجموعة شاملة من Java) إلى Java bytecode.

لست على دراية كافية بـ C# أو Ruby لأعرف ما هي نسختهم من أدوات الديكور.

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