سؤال

وقبل فصلين دراسيين، وكان لي الأستاذ الذي قال:

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

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

والآن، يبدو أن الحق بالنسبة لي. ولكن لم يتم بما في ذلك تلك الأنواع من واضعي / حاصل جزءا أساسيا من خلق JavaBeans؟ إذا كان الأمر كذلك لماذا؟ إذا لم يكن كذلك، ما أنا سوء الفهم حول JavaBeans؟

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

المحلول

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

في أي حال، كنت تريد أن تجعل مرئية من الخارج فقط المتغيرات التي لديك عمل ينظر خارج الفصول الدراسية.

نصائح أخرى

ويمكنك أن تقرأ لماذا جالبة واضعة الأساليب هي الشر :

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

وقد يعترض بالقول "ولكن ما   حول JavaBeans؟ "ماذا عن هؤلاء؟ أنت   بالتأكيد أن نبني JavaBeans دون   حاصل على واضعي. ال   BeanCustomizer، BeanInfo، و   وتوجد الطبقات BeanDescriptor كل ل   بالضبط هذا الغرض. والتخطيط الاستراتيجي المشترك JavaBean   ألقى المصممين المواصفات وجالبة / اضع   لغة في الصورة لأنها   اعتقد انه سيكون وسيلة سهلة ل   بسرعة جعل-شيء الفول يمكنك   تفعل حين كنت تعلم كيفية القيام بذلك   حق. لسوء الحظ، لم لا أحد ذلك.

     

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

وانها عادة ما تكون بسيطة للغاية، لكشف واضعي / حاصل للمتغيرات تحتاج إلى إجراء مرئية من الخارج، والتي لا تعرض اضعي / حاصل للمتغيرات لا أحد آخر لديك أي شأن في معرفة.

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

إذا كان لديك فئة BankAccount مع متغير المثال balance، وخلق حاصل على واضعة لأنه من المنطقي إذا كنت تريد أن تكون قادرة على التحقق وضبط توازن.

وحتى هنا وهناك يختبئ المعلومات - في شكل التغليف التنفيذ. وجالبة "double getBalance()" يمكن ببساطة بإرجاع قيمة المتغير المثال الأساسي إذا كانت double، أو أنه يمكن إرجاع قيمة مستمدة من BigDecimal إذا كان هذا هو الخيار تنفيذ للمتغير، أو أنها يمكن أن تكون الدعوة على شبكة الإنترنت عن بعد الخدمة وإعادة النتيجة. لذا، فإن جالبة / اضع لا يزال يسمح لتنفيذ تختلف، وبالتالي لا تنتهك التغليف (واستطرادا، لا تفعل JavaBeans).

وماذا JavaBeans القيام به بالنسبة لك هو تحديد واجهة (getXXX(), setXXX()) للحصول على وتحديد "خصائص"، سمات فئة المستخدمين يرغب عادة لفحص أو التغيير. إذا صفك لديها معلومات بأن لا يعتبر "الملكية"، ليست هناك حاجة للكشف عليه. على سبيل المثال، دعنا نقول الطبقة BankAccount ديها متغير مثيل المستخدمة للتحقق من صحة الانسحاب. إذا كان العميل لا يحتاج الوصول أو تعديل هذا، ليس هناك نقطة في خلق جالبة أو اضع لذلك.

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