سؤال

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

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

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

والمشكلة أواجه الآن هو أنني لا أريد المستخدم النهائي (مطور تطبيق دمج برنامجي لتعزيز وظائفها الخاصة) من أي وقت مضى أن ازعجت مع كل ما العناصر غير المرغوب فيها اضافية، والغرق في سيل من تعقيد لا لزوم لها .

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

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

في حالتي محددة، وأنا النامية لمنصة فلاش (AIR / فليكس / أكشن) مع ملفات المكتبة SWC. منهجية البناء هو analagous لمنصة جافا، حيث يتم تجميع جميع الطبقات في وحدة نمطية كود مضغوط مع الرؤية المساواة (ملف SWC أكشن هو، من الناحية النظرية، تقريبا متطابقة تماما مع ملف JAR جافا).

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

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

المحلول

وانه من الصعب جدا لإخفاء الأشياء في AS. هناك محدد الوصول الداخلي وهناك أيضا مساحة الأسماء. أدوبي لديها بعض المساعدة على الحزم و مساحات الأسماء التي قد تكون مفيد لك.

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

والمتخصصين وصول الحزمة (على سبيل المثال الخاصة والداخلية) هي أقرب إلى ما تريد. ولكن إذا <م> أنت يمكن الوصول إلى الطبقات الخارجية الحدود حزمة ثم <م> المستخدم يمكن أيضا. هناك الخارقة حتى رأيت حول ذلك يمكن فحص swfc وبصق على قائمة الطبقات جزءا لا يتجزأ من أي واحد يمكن استخدام getClassByDefinition إنشاء مثيل.

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

نصائح أخرى

واعتقد انه يمكن سحب هذا باستخدام النطاقات: HTTP: //livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm؟context=LiveDocs_Parts&file=00000040.html

لاحظ أن مساحات الأسماء ليست هي نفسها في أكشن كما هو الحال في C #، هو أشبه مساحات الأسماء في أكس.

وبالمناسبة، واحدة من الحيل الأخرى التي كنت تستخدم (لأنني لم أكن أعرف عن المعدل "الداخلية" أو بمساحات) هو لإخفاء الطبقات باعلانهم خارج الحزمة الحالية، مثل هذا:

package com.example {

   public class A {
      // ...
   }

}

class B {
   // ...
}

class C {
   // ...
}

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

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