คำถามติดแท็ก model-view-controller

Model – View – Controller (MVC) เป็นรูปแบบสถาปัตยกรรมที่ใช้ในวิศวกรรมซอฟต์แวร์ สำหรับ Microsoft ASP.NET MVC โปรดใช้แท็ก [asp.net-mvc] หรือ [asp.net-core-mvc] แทน สำหรับ Spring MVC โปรดใช้แท็ก [spring-mvc] แทน

24
MVP และ MVC คืออะไรและแตกต่างกันอย่างไร
ต้องการปรับปรุงโพสต์นี้หรือไม่? ให้คำตอบโดยละเอียดสำหรับคำถามนี้รวมถึงการอ้างอิงและคำอธิบายว่าทำไมคำตอบของคุณถึงถูกต้อง คำตอบที่ไม่มีรายละเอียดเพียงพออาจแก้ไขหรือลบออกได้ เมื่อมองไปไกลกว่าRAD (ลากวางและกำหนดค่า) วิธีการสร้างส่วนติดต่อผู้ใช้ที่เครื่องมือมากมายขอแนะนำให้คุณมีแนวโน้มที่จะเจอสามรูปแบบการออกแบบที่เรียกว่าModel-View-Controller , Model-View-PresenterและModel-View-ViewModel คำถามของฉันมีสามส่วน: รูปแบบเหล่านี้แก้ไขปัญหาใด พวกเขาคล้ายกันอย่างไร แตกต่างกันอย่างไร

30
การส่งผ่านข้อมูลระหว่างตัวควบคุมมุมมอง
ฉันยังใหม่กับ iOS และ Objective-C และกระบวนทัศน์ MVC ทั้งหมดและฉันติดอยู่กับสิ่งต่อไปนี้: ฉันมีมุมมองที่ทำหน้าที่เป็นแบบฟอร์มการป้อนข้อมูลและฉันต้องการให้ตัวเลือกแก่ผู้ใช้ในการเลือกผลิตภัณฑ์หลายรายการ ผลิตภัณฑ์มีการระบุไว้ในมุมมองอื่นด้วยUITableViewControllerและฉันได้เปิดใช้งานการเลือกหลายรายการ คำถามของฉันคือฉันจะถ่ายโอนข้อมูลจากมุมมองหนึ่งไปยังมุมมองอื่นได้อย่างไร ฉันจะเลือกสิ่งที่อยู่UITableViewในอาร์เรย์ แต่ฉันจะส่งกลับไปยังมุมมองฟอร์มการป้อนข้อมูลก่อนหน้าได้อย่างไรเพื่อให้สามารถบันทึกพร้อมกับข้อมูลอื่น ๆ ไปยัง Core Data เมื่อส่งแบบฟอร์ม ฉันได้ท่องไปรอบ ๆ และเห็นบางคนประกาศอาร์เรย์ในตัวแทนแอพ ฉันอ่านบางอย่างเกี่ยวกับ Singletons แต่ไม่เข้าใจว่าสิ่งเหล่านี้คืออะไรและฉันอ่านบางอย่างเกี่ยวกับการสร้างแบบจำลองข้อมูล อะไรจะเป็นวิธีที่ถูกต้องในการทำสิ่งนี้และฉันจะทำอย่างไร

25
MVC กับ MVVM ต่างกันอย่างไร? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 เดือนที่ผ่านมา มีความแตกต่างระหว่างรูปแบบ "Model View Controller" มาตรฐานและรูปแบบ Model / View / ViewModel ของ Microsoft หรือไม่

5
โมเดลควรมีโครงสร้างอย่างไรใน MVC [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันเพิ่งเข้าใจเกี่ยวกับกรอบ MVC และฉันมักจะสงสัยว่าควรมีโค้ดจำนวนเท่าใดในโมเดล ฉันมักจะมี data access class ที่มีวิธีดังนี้: public function CheckUsername($connection, $username) { try { $data = array(); $data['Username'] = $username; //// SQL $sql = "SELECT Username FROM" . $this->usersTableName . " WHERE Username = :Username"; //// Execute statement return $this->ExecuteObject($connection, $sql, $data); …

21
รูปแบบ MVC บน Android
เป็นไปได้หรือไม่ที่จะใช้รูปแบบ model-view – controller ใน Java สำหรับ Android? หรือมีการนำไปใช้แล้วผ่านกิจกรรมหรือไม่ หรือมีวิธีที่ดีกว่าในการใช้รูปแบบ MVC สำหรับ Android

10
การแยกตรรกะทางธุรกิจและการเข้าถึงข้อมูลใน django
ฉันจะเขียนโครงการใน Django และผมเห็นว่า 80% models.pyของรหัสที่อยู่ในแฟ้ม รหัสนี้ทำให้เกิดความสับสนและหลังจากช่วงเวลาหนึ่งฉันหยุดที่จะเข้าใจสิ่งที่เกิดขึ้นจริง นี่คือสิ่งที่รบกวนจิตใจฉัน: ฉันพบว่าน่าเกลียดที่ระดับโมเดลของฉัน (ซึ่งควรจะรับผิดชอบในการทำงานกับข้อมูลจากฐานข้อมูลเท่านั้น) ก็กำลังส่งอีเมลการเดินบน API ไปยังบริการอื่น ๆ เป็นต้น นอกจากนี้ฉันพบว่าไม่สามารถวางตรรกะทางธุรกิจในมุมมองได้เนื่องจากวิธีนี้เป็นการยากที่จะควบคุม ตัวอย่างเช่นในแอปพลิเคชันของฉันมีอย่างน้อยสามวิธีในการสร้างอินสแตนซ์ใหม่ของUserแต่ในทางเทคนิคมันควรสร้างพวกเขาอย่างสม่ำเสมอ ฉันไม่ได้สังเกตเสมอเมื่อวิธีการและคุณสมบัติของแบบจำลองของฉันไม่เป็นตัวกำหนดและเมื่อพวกเขาพัฒนาผลข้างเคียง นี่คือตัวอย่างง่ายๆ ตอนแรกUserแบบจำลองเป็นแบบนี้: class User(db.Models): def get_present_name(self): return self.name or 'Anonymous' def activate(self): self.status = 'activated' self.save() เมื่อเวลาผ่านไปมันกลายเป็นสิ่งนี้: class User(db.Models): def get_present_name(self): # property became non-deterministic in terms of database # data is taken …

8
จะใส่ข้อมูลโมเดลและพฤติกรรมได้ที่ไหน [TL; ดร; ใช้บริการ]
ฉันกำลังทำงานกับ AngularJS สำหรับโครงการล่าสุดของฉัน ในเอกสารประกอบและแบบฝึกหัดข้อมูลโมเดลทั้งหมดจะถูกใส่เข้าไปในขอบเขตของคอนโทรลเลอร์ ฉันเข้าใจว่าจะต้องมีให้พร้อมใช้งานสำหรับคอนโทรลเลอร์และภายในมุมมองที่เกี่ยวข้อง อย่างไรก็ตามฉันไม่คิดว่ารูปแบบควรนำไปใช้จริงที่นั่น มันอาจจะซับซ้อนและมีแอตทริบิวต์ส่วนตัวเช่น นอกจากนี้อาจต้องการนำมาใช้ซ้ำในบริบท / แอปอื่น การวางทุกอย่างลงในคอนโทรลเลอร์จะแบ่งรูปแบบ MVC โดยสิ้นเชิง เช่นเดียวกันถือเป็นจริงสำหรับพฤติกรรมของรูปแบบใด ๆ ถ้าฉันจะใช้สถาปัตยกรรม DCIและแยกพฤติกรรมจากตัวแบบข้อมูลฉันจะต้องแนะนำวัตถุเพิ่มเติมเพื่อเก็บพฤติกรรม สิ่งนี้จะทำได้โดยการแนะนำบทบาทและบริบท DCI == D ATA C ollaboration ฉัน nteraction แน่นอนว่าแบบจำลองข้อมูลและพฤติกรรมสามารถนำไปใช้กับวัตถุจาวาสคริปต์ธรรมดาหรือรูปแบบ "คลาส" ใด ๆ แต่สิ่งที่จะเป็นวิธี AngularJS ที่จะทำอย่างไร ใช้บริการหรือไม่ ดังนั้นลงมาที่คำถามนี้: คุณใช้โมเดลอย่างไรแยกจากคอนโทรลเลอร์ตามแนวทางปฏิบัติที่ดีที่สุดของ AngularJS


9
การพัฒนาเว็บ Java EE ฉันต้องเริ่มจากที่ใดและต้องใช้ทักษะใดบ้าง [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ฉันต้องการเรียนรู้อย่างน้อยในระดับพื้นฐานวิธีการสร้างเว็บแอปพลิเคชัน Java (มาจากพื้นหลัง. NET) ฉันต้องการที่จะสามารถสร้างปรับใช้แอปพลิเคชันประเภท CMS อย่างง่าย ๆ ตั้งแต่เริ่มต้น ฉันต้องเรียนรู้อะไรอย่างแน่นอน Tomcat ดูเหมือนจะเป็นเว็บเซิร์ฟเวอร์ที่ดีสำหรับ Java เว็บมีตัวเลือกอะไรบ้าง? ฉันรู้ว่ามีไฮเบอร์เนตสำหรับออม Java มี MVC หรือไม่ แล้วJSPล่ะ? MVC และ JSP สามารถอยู่ด้วยกันได้หรือไม่? NetBeans ? อาจเป็นหนังสือที่ครอบคลุมสิ่งเหล่านี้ทั้งหมดหรือไม่?

5
ฉันจะได้รับชื่อของตัวควบคุมปัจจุบันในมุมมองได้หรือไม่?
มีวิธีที่จะคิดออกว่าตัวควบคุมปัจจุบันมาจากภายในมุมมองหรือไม่? สำหรับตัวอย่างของสาเหตุที่ฉันต้องการทราบว่า: หากคอนโทรลเลอร์หลายตัวใช้เลย์เอาต์เดียวกันฉันอาจมีส่วนหนึ่งในไฟล์ ERB ของเลย์เอาต์ที่ฉันต้องการไฮไลต์รายการเมนูของเพจปัจจุบันตามตัวควบคุม อาจเป็นวิธีที่ไม่ดี ถ้าเป็นเช่นนั้นวิธีที่ได้รับความนิยมมากขึ้นในการทำเช่นนี้คืออะไร? ฉันสนใจที่จะทราบเกี่ยวกับการตั้งชื่อให้กับคอนโทรลเลอร์ปัจจุบันด้วยวิธีใดวิธีหนึ่ง (เห็นได้ชัดว่าฉันสามารถใส่อะไรก็ได้ลงไป@controller_name = 'users'ในคอนโทรลเลอร์แต่ละอัน แต่นั่นดูเหมือนว่าสิ่งที่ Rails จะทำไว้เบื้องหลังแล้วดังนั้นฉันแค่สงสัยว่ามีวิธีในตัว)

4
อะไรคือความแตกต่างระหว่างรูปแบบการออกแบบ MVC, MVP และ MVVM ในแง่ของการเข้ารหัส c #
หากเราค้นหา Google โดยใช้วลี "อะไรคือความแตกต่างระหว่าง MVC, MVP และ MVVM รูปแบบการออกแบบ" จากนั้นเราอาจได้ URL ไม่กี่อันที่พูดถึงความแตกต่างระหว่างรูปแบบการออกแบบ MVC MVP และ MVVM ตามหลักเหตุผลเช่น : MVP ใช้ในสถานการณ์ที่ไม่สามารถผูกข้อมูลผ่าน datacontext ได้ Windows Forms เป็นตัวอย่างที่สมบูรณ์แบบของสิ่งนี้ ในการแยกมุมมองออกจากแบบจำลองจำเป็นต้องมีผู้นำเสนอ เนื่องจากมุมมองไม่สามารถเชื่อมโยงโดยตรงกับผู้นำเสนอได้จึงต้องส่งข้อมูลไปยังมุมมองผ่านอินเทอร์เฟซ (IView) MVVM ใช้ในสถานการณ์ที่ผูกพันผ่าน datacontext ได้ ทำไม? อินเทอร์เฟซ IView ต่าง ๆ สำหรับแต่ละมุมมองจะถูกเอาออกซึ่งหมายถึงรหัสน้อยกว่าเพื่อรักษา ตัวอย่างที่ MVVM มีความเป็นไปได้ ได้แก่ WPF และโปรเจ็กต์ javascript โดยใช้สิ่งที่น่าพิศวง MVC ใช้ในสถานการณ์ที่ไม่สามารถเชื่อมต่อระหว่างมุมมองและส่วนที่เหลือของโปรแกรมได้ (และคุณไม่สามารถใช้ MVVM …

7
เพิ่มคำสั่งจากคำสั่งใน AngularJS
ฉันกำลังพยายามสร้างคำสั่งที่ดูแลการเพิ่มคำสั่งเพิ่มเติมให้กับองค์ประกอบที่ประกาศไว้ ตัวอย่างเช่นผมต้องการที่จะสร้างคำสั่งที่จะดูแลของการเพิ่มdatepicker, และdatepicker-languageng-required="true" หากฉันพยายามเพิ่มคุณสมบัติเหล่านั้นและจากนั้นใช้$compileฉันเห็นได้ชัดว่าสร้างวงวนไม่สิ้นสุดดังนั้นฉันจึงตรวจสอบว่าฉันได้เพิ่มคุณสมบัติที่ต้องการแล้ว: angular.module('app') .directive('superDirective', function ($compile, $injector) { return { restrict: 'A', replace: true, link: function compile(scope, element, attrs) { if (element.attr('datepicker')) { // check return; } element.attr('datepicker', 'someValue'); element.attr('datepicker-language', 'en'); // some more $compile(element)(scope); } }; }); แน่นอนถ้าฉันไม่ได้$compileองค์ประกอบองค์ประกอบจะถูกตั้งค่า แต่คำสั่งจะไม่ถูก bootstrapped วิธีนี้ถูกต้องหรือฉันทำผิดหรือเปล่า? มีวิธีที่ดีกว่าเพื่อให้บรรลุพฤติกรรมเดียวกันหรือไม่ UDPATE : เนื่องจากความจริงที่ว่า$compileเป็นวิธีเดียวที่จะบรรลุเป้าหมายนี้มีวิธีข้ามการรวบรวมครั้งแรกหรือไม่ (องค์ประกอบอาจมีลูกหลายคน) อาจจะด้วยการตั้งค่าterminal:true? …

13
อะไรคือ“ ตัวควบคุม” ใน“ MVC”
ฉันคิดว่าฉันเข้าใจแนวคิดพื้นฐานของ MVC - ตัวแบบมีข้อมูลและพฤติกรรมของแอปพลิเคชันมุมมองมีหน้าที่รับผิดชอบในการแสดงให้ผู้ใช้และตัวควบคุมจัดการกับอินพุตของผู้ใช้ สิ่งที่ฉันไม่แน่ใจคือสิ่งที่เกิดขึ้นในคอนโทรลเลอร์ ให้พูดเช่นฉันมีแอพพลิเคชั่นที่ค่อนข้างเรียบง่าย (ฉันกำลังคิดถึง Java เป็นพิเศษ แต่ฉันคิดว่าหลักการเดียวกันนี้ใช้กับที่อื่น) ผมจัดระเบียบรหัสของฉันเป็น 3 แพคเกจที่เรียกว่าapp.model, และapp.viewapp.controller ภายในapp.modelแพ็คเกจฉันมีคลาสไม่กี่คลาสที่สะท้อนถึงพฤติกรรมที่แท้จริงของแอปพลิเคชัน สิ่งเหล่านี้extends Observableและใช้setChanged()และnotifyObservers()เพื่อทริกเกอร์มุมมองเพื่ออัพเดตเมื่อเหมาะสม app.viewแพคเกจมีระดับ (หรือชั้นเรียนหลายชนิดที่แตกต่างกันของการแสดง) ที่ใช้javax.swingชิ้นส่วนในการจัดการการแสดงผล ส่วนประกอบเหล่านี้บางอย่างจำเป็นต้องป้อนกลับเข้าไปในรุ่น หากฉันเข้าใจอย่างถูกต้องมุมมองไม่ควรมีอะไรเกี่ยวข้องกับความคิดเห็นซึ่งควรได้รับการจัดการโดยผู้ควบคุม แล้วฉันจะใส่อะไรในคอนโทรลเลอร์? ฉันใส่public void actionPerformed(ActionEvent e)ในมุมมองด้วยการโทรไปยังวิธีการในคอนโทรลเลอร์หรือไม่ ถ้าเป็นเช่นนั้นควรมีการตรวจสอบความถูกต้อง ฯลฯ ในคอนโทรลเลอร์หรือไม่? ถ้าเป็นเช่นนั้นฉันจะส่งข้อความแสดงข้อผิดพลาดกลับไปยังมุมมองได้อย่างไร - ควรผ่านโมเดลอีกครั้งหรือผู้ควบคุมควรส่งตรงไปที่มุมมอง หากการตรวจสอบเสร็จสิ้นในมุมมองฉันจะใส่อะไรลงในคอนโทรลเลอร์ ขออภัยสำหรับคำถามที่ยาวฉันแค่ต้องการเอกสารความเข้าใจของฉันเกี่ยวกับกระบวนการและหวังว่าใครบางคนสามารถชี้แจงปัญหานี้ให้ฉัน!

10
ตรรกะทางธุรกิจใน MVC [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน16 วันที่ผ่านมา ปรับปรุงคำถามนี้ ฉันมีคำถาม 2 ข้อ: ไตรมาสที่ 1 "ตรรกะทางธุรกิจ" ตรงไหนในรูปแบบ MVC ฉันสับสนระหว่าง Model และ Controller ไตรมาสที่ 2 "ตรรกะทางธุรกิจ" เหมือนกับ "กฎเกณฑ์ทางธุรกิจ" หรือไม่? ถ้าไม่ต่างกันคืออะไร มันจะดีถ้าคุณสามารถอธิบายด้วยตัวอย่างเล็ก ๆ

5
แสดงป๊อปอัปด้วยวิธีที่หรูหราที่สุด
ฉันมีแอพ AngularJS นี้ ทุกอย่างใช้ได้ดี ตอนนี้ฉันต้องแสดงป๊อปอัปที่แตกต่างกันเมื่อเงื่อนไขเฉพาะกลายเป็นจริงและฉันสงสัยว่าอะไรจะเป็นวิธีที่ดีที่สุดในการดำเนินการต่อ ขณะนี้ฉันกำลังประเมินสองตัวเลือก แต่ฉันเปิดรับตัวเลือกอื่นอย่างแน่นอน ตัวเลือกที่ 1 ฉันสามารถสร้างองค์ประกอบ HTML ใหม่สำหรับป๊อปอัปและผนวกเข้ากับ DOM โดยตรงจากคอนโทรลเลอร์ สิ่งนี้จะทำลายรูปแบบการออกแบบ MVC ฉันไม่พอใจกับวิธีนี้ ตัวเลือก 2 ฉันสามารถใส่รหัสสำหรับป๊อปอัปทั้งหมดในไฟล์ HTML คงที่ได้ตลอดเวลา จากนั้นใช้ngShowฉันสามารถซ่อน / แสดงเฉพาะป๊อปอัปที่ถูกต้องเท่านั้น ตัวเลือกนี้ไม่สามารถปรับขนาดได้จริงๆ ดังนั้นฉันค่อนข้างมั่นใจว่าจะต้องมีวิธีที่ดีกว่าในการบรรลุสิ่งที่ฉันต้องการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.