منذ وقت ليس ببعيد ، بدأت أتعلم Go ووجدت أن هناك أشياء كثيرة تبدو مألوفة تعمل بشكل مختلف. واجهات بينهم. في السابق ، لم أفكر في حقيقة أن كتابة البط يمكن أن تكون بلغة مطبوعة بشكل ثابت. الآن يبدو لي أن هذا منطقي ومعقول. هنا سوف أصف أحد الأسباب التي حددت موقفي إلى حد كبير في واجهات في الذهاب.
الذهاب هي لغة قوية جدا
آسف للتورية ، لا يمكن أن تقاومحول موضوع "هل تصبح لغة موجهة للكائنات؟" تتم كتابة العديد من المقالات ، بما في ذلك على حبري. ولكن ليس في كثير من الأحيان ، عندما يتم طرح هذا الموضوع ، يتحدثون عن مبادئ SOLID ونادراً ما يتحدثون عن آخرها (بالترتيب ، ولكن ليس في أهميتها) - مبدأ انعكاس التبعية (DIP). إذا نسيت ، فعادة ما يتم صياغتها على النحو التالي:
يجب ألا تعتمد التجريدات على التفاصيل. يجب أن تعتمد التفاصيل على التجريد.
ربما أقوى أداة تم اختراعها لتنفيذ هذا المبدأ - واجهات. إذا كنت ترغب في توضيح معكوس التبعيات لنفسك ،
فإليك مقالة جيدة . بالمناسبة ، الصورة من هناك.

لنفترض أن Foo and Bar في وحدات مختلفة: F و B. ولكن بعد ذلك ، لتنفيذ الواجهة ، يجب علينا استيراد واجهة IBar من F إلى B ، ثم نقل تنفيذها بطريقة ما إلى F. بمعنى ، اعتماد دوري بين الحزم (ليس من حيث السلوك ، ولكن من حيث الاستيراد). هذا هو المكان الذي يأتي فيه التطبيق الضمني للواجهات لمساعدتنا. يمكننا استيراد Bar من B إلى F ، وسيكتشف Go بنفسه ما إذا كان سينفذ IBar أم لا. في هذه الحالة ، يصبح تحديد الواجهات أثناء التنفيذ بشكل صريح أمرًا ضروريًا.
بضع كلمات في النهاية
واجهات في Go هي أداة قوية ، بما في ذلك انعكاس التبعية. لكن يجب ألا تنشئها لكل شيء ، لذلك في كل مرة تسأل نفسك - لماذا تفعل هذا.
ما الذي يعجبكم / لا يعجبكم في نظام Go Go؟