جافا:استمارة التقديم في MVC :ما هي أفضل الممارسات ؟

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

سؤال

أنا باستخدام MVC framework والذي هو قليلا مثل الدعامات.لذا قلت "تحرير متجر" الرابط في طلبي هذا كيف url تبدو مثل:

http://localhost:9080/test?action=editStore&storeNum=10

والآن يحدد عملي (مماثلة إلى الدعامات العمل) ليتم تشغيلها.عمل المقابلة هنا هو:EditStoreAction.يؤدي النقر فوق هذا من شأنه أن يفتح يطفو على السطح مع سمات مختلفة من متجر تحرير.

سؤالي هنا هو:كيف يمكنني كتابة أفعالي ؟ هل أكتب اثنين من الإجراءات في هذا السياق ؟

  1. EditStoreAction التي سوف تجعل تحرير.jsp
  2. StoreSaveAction التي سوف تحتج عندما يضغط المستخدم تقبل على المقدمة استجابة تحرير.jsp.

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

ما هو أفضل pratice هنا ؟ إنشاء العديد من الإجراءات ممكن كوز أنها تحافظ على رمز وحدات?أو مجرد كتابة عمل واحد للتعامل مع كل شيء في jsp?

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

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

المحلول

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

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

والأفضل إذا كنت جعل اثنين من وحدات تحكم لكل كيان.قد تكون واحدة لجميع الحصول على طلبات أخرى بعد الطلبات.لذا في حالتك سيكون هناك اثنين من وحدات تحكم StoreController لجميع الطلبات الأخرى ، StoreFormController لجميع الطلبات على شكل ، وهي طلبات post.إن أول عمل يجري على الذهاب إلى editStore() طريقة StoreController, في حين أن الثاني يتم طلب POST سوف تذهب إلى saveStore() طريقة StoreFormController.يمكنك تحديد العديد من الأساليب حسب الحاجة في أي من هاتين الفئتين على أساس نوع الطلب.

يمكنك أن ترى بسهولة ، حيث أتيت إذا كنت تعرف الربيع MVC API.

نصائح أخرى

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

أن يقال في حالتك ، وأود أن تحديد فئة واحدة فقط - دعونا نقول "DispatchStoreAction" ، وأود أن تحديد طريقتين, ربما "إعداد" و "حفظ".أنا أحب هذه الطريقة لأنني لا تزال لديها جيدة فئة التجريد (و لا وضع "العمل" أنت المنفذة في الفصل اسم) لأن الأساليب يمكن أن تحدد بوضوح ما يفترض القيام به ، و أيضا بسبب, بحكم التعريف, عمل الطبقات تميل إلى أن تكون صغيرة.سوف المحتمل أن يكون "StoreLogic" أو "StoreBusiness" محددة في مكان ما, و هذه الفئة سوف تتعامل مع منطق الأعمال ذات الصلة إلى الجهة التي كنت تعمل على.أنا شخصيا أعتقد أنه من الجيد إذا كان لديك واحدة "StoreAction" ثم واحد "StoreLogic" واحد "UserAction" واحد "UserLogic" وهلم جرا - العلاقة لا تحتاج إلى أن تكون 1 إلى 1 ولكن أعتقد أنه يساعد على الحفاظ على القانون.

التحقق من التعليمات البرمجية المصدر من DispatchAction الطبقة للحصول على أفكار حول كيفية القيام بذلك ، ولكن التنفيذ ينبغي أن تكون تافهة.

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