سؤال

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

ويبدو وكأنه الاستخدام الشرعي للعن المفردة، ولكن أظل القراءة عن كيف انهم وحوش الشر. هل هذا الاستخدام طيب؟

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

المحلول

والمشكلة هي أن كل نافذة فايرفوكس هو عملية منفصلة تماما بقدر ما تشعر بالقلق جافا سكريبت.

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

والمشكلة الأخرى التي تسير لدينا هو أن ويندوز يستغرق بعض الوقت لبدء وتشغيل جافا سكريبت، وليس لديك أي شيء مثل التزامن. فمن الممكن تماما أن نافذة 1 الشيكات لمعرفة ما اذا نافذة 2 أنشأت المفرد، يرى هذا لم يحدث، نافذة 2 نافذة الاختيار 1، يرى هذا لم يحدث، وبعد ذلك كل خلق المفرد الخاصة بهم.

وأنا أتكلم من تجربة: كتبت فايرفوكس التمديد التي لا شيء يشبه إلى حد كبير ما تريد القيام به: يفترض نافذة واحدة فقط للتحقق من الملقم البعيد (ويجب إعلام عندما يغلق أي نافذة واحدة كل النوافذ الأخرى) .

و(في الألغام، كل نافذة على البدء بالاستعلام عن نوافذ أخرى للعثور على نافذة "سيد").

والطريقة أنظف حول هذه هي لإنشاء خدمة، تماما مثل تلك المتصفح يعرض للجافا سكريبت. ولكن ذلك يتطلب ترميز في في C، وليس جافا سكريبت، ويجعل تركيب تيه التمديد عبر منصة المزيد من الألم.

نصائح أخرى

لا يوجد شيء خطأ في حد ذاته مع المفرد، في حد ذاته. تكمن المشكلة في كيف يمكن أن يكون (أ ب) يستخدم: انها في الأساس وسيلة يتوهم أن يكون غلوبالس. A المفرد يتيح فقط لديك مستوى المراوغة التي الذاتي يحتوي على معظم تلك البيانات. في بعض الأحيان، على الرغم من هذا النمط هو الطريقة الوحيدة التي يمكن أن تحل بعض المشاكل. في هذه الحالة، فإنه على ما يرام تماما. ومع ذلك، إذا كنت تستطيع التفكير في طريقة أخرى يستخدم ربما فقط أكثر قليلا كود / ذاكرة لإنجاز / التى ضربها الأداء، كنت اذهب مع أنه إذا استطعت. خلاف ذلك، هناك حقا شيء خاطئ مع استخدام المفرد، طالما كنت على بينة من ما الذي تحصل عليه في.

وسنغلتونس حد ذاتها ليست شرا. إنها إساءة استعمالها وهذا هو ... (يمكنك عادة الابتعاد مع استخدام حاوية DI أن يكون لديك مثيل "singletoned" مما يجعل هذا النمط ليس أقل أوصت).

وليس لدي أي خبرة في مجال تصفون. ومع ذلك المفرد يبدو لي وكأنه الخيار المنطقي.

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