อัปเดตพฤศจิกายน 2018
หลังจากทำงานและเขียนบล็อกเกี่ยวกับ MVC และ MVP ใน Android เป็นเวลาหลายปี (ดูเนื้อหาของคำตอบด้านล่าง) ฉันตัดสินใจที่จะรวบรวมความรู้และความเข้าใจของฉันในรูปแบบที่ครอบคลุมและย่อยง่ายขึ้น
ดังนั้นฉันจึงเปิดตัวหลักสูตรวิดีโอเกี่ยวกับสถาปัตยกรรมแอปพลิเคชัน Android ดังนั้นถ้าคุณกำลังสนใจในการเรียนรู้มากที่สุดรูปแบบสถาปัตยกรรมขั้นสูงในการพัฒนา Android, ตรวจสอบหลักสูตรที่ครอบคลุมที่นี่
คำตอบนี้ได้รับการปรับปรุงเพื่อให้ยังคงมีความเกี่ยวข้อง ณ เดือนพฤศจิกายน 2559
ดูเหมือนว่าคุณกำลังมองหารูปแบบสถาปัตยกรรมมากกว่ารูปแบบการออกแบบ
รูปแบบการออกแบบมีจุดประสงค์เพื่ออธิบาย "กลลวง" ทั่วไปที่โปรแกรมเมอร์อาจนำไปใช้ในการจัดการชุดซอฟต์แวร์ที่เกิดขึ้นประจำ ตัวอย่างเช่น: ใน OOP เมื่อมีความต้องการให้วัตถุแจ้งชุดวัตถุอื่น ๆ เกี่ยวกับเหตุการณ์บางอย่างสามารถใช้รูปแบบการออกแบบผู้สังเกตการณ์ได้
เนื่องจากแอปพลิเคชั่น Android (และ AOSP ส่วนใหญ่) เขียนด้วย Java ซึ่งเป็นแบบเชิงวัตถุฉันคิดว่าคุณจะลำบากในการมองหารูปแบบการออกแบบ OOP เดียวซึ่งไม่ได้ใช้กับ Android
ในทางกลับกันรูปแบบทางสถาปัตยกรรมไม่ได้ระบุถึงงานซอฟต์แวร์เฉพาะ - พวกเขามุ่งหวังที่จะให้แม่แบบสำหรับองค์กรซอฟต์แวร์ตามกรณีการใช้งานของส่วนประกอบซอฟต์แวร์ที่เป็นปัญหา
มันฟังดูซับซ้อนเล็กน้อย แต่ฉันหวังว่าตัวอย่างจะชี้แจง: หากมีแอปพลิเคชันบางตัวที่ใช้ดึงข้อมูลจากเซิร์ฟเวอร์ระยะไกลและนำเสนอให้ผู้ใช้ในลักษณะที่มีโครงสร้างMVCอาจเป็นตัวเลือกที่ดีสำหรับการพิจารณา โปรดทราบว่าฉันไม่ได้พูดอะไรเกี่ยวกับงานซอฟต์แวร์และการไหลของโปรแกรมของแอปพลิเคชัน - ฉันเพิ่งอธิบายมันจากมุมมองของผู้ใช้และผู้สมัครสำหรับรูปแบบสถาปัตยกรรมปรากฏ
เมื่อคุณพูดถึง MVC ในคำถามของคุณฉันเดาว่ารูปแบบสถาปัตยกรรมเป็นสิ่งที่คุณกำลังมองหา
ในอดีตไม่มีแนวทางอย่างเป็นทางการจาก Google เกี่ยวกับสถาปัตยกรรมของแอปพลิเคชันซึ่ง (ด้วยเหตุผลอื่น ๆ ) ทำให้เกิดความสับสนโดยสิ้นเชิงในซอร์สโค้ดของแอป Android ในความเป็นจริงแม้กระทั่งทุกวันนี้แอปพลิเคชั่นส่วนใหญ่ที่ฉันเห็นยังคงไม่ปฏิบัติตามแนวทางปฏิบัติที่ดีที่สุดของ OOP และไม่แสดงรหัสองค์กรที่ชัดเจน
แต่วันนี้สถานการณ์ที่แตกต่าง - Google เพิ่งเปิดตัวห้องสมุดผูกข้อมูลซึ่งเป็นแบบครบวงจรกับ Android สตูดิโอ, และแม้กระทั่งรีดออกชุดของพิมพ์เขียวสถาปัตยกรรมสำหรับการใช้งาน Android
สองปีที่แล้วมันยากมากที่จะหาข้อมูลเกี่ยวกับ MVC หรือ MVP บน Android วันนี้ MVC, MVP และ MVVM ได้กลายเป็น "คำพูดฉวัดเฉวียน" ในชุมชน Android และเราถูกล้อมรอบด้วยผู้เชี่ยวชาญมากมายที่พยายามโน้มน้าวให้เรารู้ว่า MVx นั้นดีกว่า MVy ในความคิดของฉันการอภิปรายว่า MVx ดีกว่า MVy ไม่มีจุดหมายอย่างสิ้นเชิงหรือไม่เพราะคำศัพท์นั้นคลุมเครือมาก - เพียงแค่ดูคำตอบของคำถามนี้และคุณจะรู้ว่าผู้คนต่าง ๆ สามารถเชื่อมโยงตัวย่อเหล่านี้
เนื่องจากความจริงที่ว่าการค้นหารูปแบบสถาปัตยกรรมที่ดีที่สุดสำหรับ Android ได้เริ่มต้นขึ้นอย่างเป็นทางการแล้วฉันคิดว่าเรากำลังจะได้เห็นความคิดอีกหลายประการ ณ จุดนี้มันเป็นไปไม่ได้จริง ๆ ที่จะทำนายรูปแบบ (หรือรูปแบบ) ที่จะกลายเป็นมาตรฐานอุตสาหกรรมในอนาคต - เราจะต้องรอดู (ฉันเดาว่ามันเป็นเรื่องของปีหรือสองปี)
อย่างไรก็ตามมีการคาดการณ์หนึ่งอย่างที่ฉันสามารถทำได้ด้วยความมั่นใจระดับสูง: การใช้ไลบรารี Data Binding จะไม่กลายเป็นมาตรฐานอุตสาหกรรม ฉันมั่นใจที่จะพูดว่าเพราะห้องสมุด Data Binding (ในการนำไปใช้ในปัจจุบัน) ให้ผลกำไรระยะสั้นและแนวทางสถาปัตยกรรมบางประเภท แต่มันจะทำให้โค้ดไม่สามารถบำรุงรักษาได้ในระยะยาว เมื่อผลกระทบระยะยาวของห้องสมุดนี้จะปรากฏขึ้น - มันจะถูกยกเลิก
ตอนนี้แม้ว่าเราจะมีแนวทางและเครื่องมือบางอย่างเป็นทางการในวันนี้ แต่โดยส่วนตัวแล้วฉันไม่คิดว่าแนวทางและเครื่องมือเหล่านี้เป็นตัวเลือกที่ดีที่สุดที่มีอยู่ (และแน่นอนว่าไม่ใช่แนวทางเดียว) ในแอปพลิเคชันของฉันฉันใช้สถาปัตยกรรม MVC ของตัวเอง มันง่ายสะอาดอ่านได้และทดสอบได้และไม่ต้องการไลบรารีเพิ่มเติม
MVC นี้ไม่เพียง แต่จะมีความแตกต่างจากผู้อื่นอย่างสิ้นเชิง แต่ก็มีพื้นฐานมาจากทฤษฎีที่ว่ากิจกรรมใน Android ไม่ใช่องค์ประกอบของ UIซึ่งมีผลกระทบอย่างมากต่อการจัดระเบียบรหัส
ดังนั้นถ้าคุณกำลังมองหารูปแบบสถาปัตยกรรมที่ดีสำหรับการใช้งาน Android ที่ตามSOLIDหลักการคุณสามารถหาคำอธิบายของหนึ่งในการโพสต์ของฉันเกี่ยวกับMVC และ MVP รูปแบบสถาปัตยกรรมใน Android