الخيار الذي التصميم الأفضل لاستخدامها في الترميز إطار؟

StackOverflow https://stackoverflow.com/questions/1045863

سؤال

وأنا الترميز إطارا (في جاوة، ولكن السؤال هو عام) والتي سوف تقدم مجموعة من واجهات للعملاء لتنفيذها. وظائف في إطار تسير على الاعتماد على الكيفية التي سيتم بها constructued الطبقات التنفيذ، وهذا هو، تاي يعتمد على تلك التطبيقات لتوفير حالات أخرى من واجهات.

وعلى سبيل المثال قد يكون لي:

Interface IContribution {
   public IMyStuff getMyStuff();
   public IHelper getHelper();
}

Interface IMyStuff {
     public void doSomeMethod(IHelper helper);
}

وكيف أتأكد من أن تلك الحالات من IMyStuff وIHelper تتوفر؟

وأسلوب واحد سيكون لإنشاء طرق "جالبة" في واجهة وفي إطار بلدي تحقق بشق الأنفس للكائنات فارغة عاد.

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

وهكذا، ما هي أفكارك حول هذا الموضوع، ما هو نهج عملي لهذا؟

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

المحلول

<اقتباس فقرة>   

وكيف أتأكد من أن تلك الحالات من IMyStuff وIHelper تتوفر؟

إذا العملاء هي المسؤولة عن تنفيذ واجهات والطبقات أنفسهم، وأود أن أقول انها مسؤوليتهم للتأكد من أن تكون تلك الحالات المتاحة - وأود أن لا تهم نفسي مع وضعه في التعليمات البرمجية الخاصة بي

نصائح أخرى

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

وبعبارة أخرى، وتبدأ مع: كيف ستعمل موكلي مع هذا الطلب؟ كيف أنها بحاجة إلى العمل معها؟

وسوف ندرك على الفور أن أبسط طريقة، من وجهة نظرهم، سيكون أفضل.

وأنت لا يمكن ضمان ذلك مع واجهات وحده، لا سلوك هناك.

وأنا أتفق مع فلسفة البرمجة الدفاعية في إطار، ومساعدة المطورين تجنب الوقوع في الخطأ.

ويمكنك توفير كائن المصنع:

public class MyPoliceman {
    public IContribution makeContributor( IMyStuff stuffer, IHelper helper)
                    throws BadAssociatesException {

     // check validity of stuffer and helper here, throw exceptions if null
    }
}

وبعد ذلك على الأقل يمكننا أن تحقق من وجود القيم الخالية الخ.

ومع بعض يعتقد انها عادة الممكن إعطاء المطورين يساعد. في بعض الحالات أفضل ما يمكن القيام به هو اعتراض الأخطاء والإبلاغ عنها craefully. على سبيل المثال هنا، يمكن تمرير IHelper غرامة تماما لديك المصنع، ولكن في وقت لاحق الإجراءات على الطبقة يمكن جعله غير قادر. (على سبيل المثال صورة كان ملف، والآثار الجانبية بعد إغلاق الملف.) ثم كل ما عليك القيام به هو فخ يترتب على ذلك من حالة الخطأ، سجل خطأ في مكان ما و(على الأرجح) بطرح استثناء. فعلى الأقل المطور لديه أدنى فكرة عن ما يجب إصلاحه.

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