سؤال

أنا بعمل تطبيق جافا.

هذا ملفاتي حتى الآن:

واجهة الشخص.

وقد setName(سلسلة aName) طريقة

PersonImpl

تنفيذ واجهة الشخص.

PersonFactory واجهة

وقد createPerson()

PersonFactoryImpl

تنفيذ PersonFactory واجهة.

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

كنت أفكر في إضافة على أنها أسلوب ثابت إلى PersonImpl أو PersonFactoryImpl, ولكن لست متأكدا.

التي هي أفضل طريقة ؟

شكرا على القراءة!

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

المحلول

إذا يتم توفير تطبيق آخر من PersonFactory، ينبغي أن تحتاج أيضا إلى توفير #getAll؟ إذا كان الأمر كذلك، فإنه ينتمي على واجهة ... وبعد ذلك لا يمكن أن يكون أسلوب ثابت في جاوة.

وبالنظر إلى ذلك، أنها ليست وظيفة من PersonFactory أو ينبغي أن تكون هناك فكرة مجردة عن آلية تخزين الخاص بك أيضا؟ إذا كان الأمر كذلك، واجهة PersonRepository التي تطبيقات قبول PersonFactory، ويوفر موطنا طبيعيا لgetAll نوع الوظيفة يبدو أكثر ملاءمة. إن لم يكن، بعد ذلك عضوا في PersonFactory ملموسة يمكن أن يكون مناسبا بما فيه الكفاية ...

نصائح أخرى

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

من الواضح أنه من غير المعقول لكل Person كائن أن يكون على بينة من كائنات أخرى مماثلة ، وبالتالي هذا الأسلوب لا تنتمي هناك.

تحرير: نظرا لحقيقة أن كانوا يقيمون في قاعدة البيانات ، فإنه قد يكون من الحكمة فصل PersonFactory (الذي عمل هو خلق Person الكائنات) ، من PersonRepository والتي سوف تكون في الواقع الوصول إلى قاعدة البيانات (أو أيا كان الثبات لديك) والعودة Person الكائنات.

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

والمصنع هو مسؤول إدارة حالات الأشخاص، لذلك هذا هو المكان الصحيح لوضعها. وعلاوة على ذلك، ينبغي أن يكون غير ثابت تماما كما هو createPerson().

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