Cập nhật tháng 11 năm 2018
Sau khi làm việc và viết blog về MVC và MVP trong Android trong vài năm (xem phần thân của câu trả lời bên dưới), tôi quyết định nắm bắt kiến thức và hiểu biết của mình ở dạng toàn diện hơn và dễ tiêu hóa hơn.
Vì vậy, tôi đã phát hành một khóa học video đầy đủ về kiến trúc ứng dụng Android. Vì vậy, nếu bạn muốn làm chủ các mẫu kiến trúc tiên tiến nhất trong phát triển Android, hãy xem khóa học toàn diện này tại đây .
Câu trả lời này đã được cập nhật để duy trì liên quan kể từ tháng 11 năm 2016
Có vẻ như bạn đang tìm kiếm các mẫu kiến trúc hơn là các mẫu thiết kế .
Các mẫu thiết kế nhằm mục đích mô tả một "mẹo" chung mà lập trình viên có thể thực hiện để xử lý một tập hợp các nhiệm vụ phần mềm định kỳ cụ thể. Ví dụ: Trong OOP, khi có nhu cầu cho một đối tượng thông báo cho một tập hợp các đối tượng khác về một số sự kiện, mẫu thiết kế quan sát viên có thể được sử dụng.
Vì các ứng dụng Android (và hầu hết AOSP) được viết bằng Java, hướng đối tượng, tôi nghĩ bạn sẽ gặp khó khăn khi tìm kiếm một mẫu thiết kế OOP duy nhất KHÔNG được sử dụng trên Android.
Mặt khác, các mẫu kiến trúc không giải quyết các nhiệm vụ phần mềm cụ thể - chúng nhằm mục đích cung cấp các mẫu cho tổ chức phần mềm dựa trên các trường hợp sử dụng của thành phần phần mềm được đề cập.
Nghe có vẻ hơi phức tạp, nhưng tôi hy vọng một ví dụ sẽ làm rõ: Nếu một ứng dụng nào đó sẽ được sử dụng để tìm nạp dữ liệu từ máy chủ từ xa và trình bày cho người dùng theo cách có cấu trúc, thì MVC có thể là một ứng cử viên tốt để xem xét. Lưu ý rằng tôi không nói gì về các tác vụ phần mềm và luồng chương trình của ứng dụng - Tôi chỉ mô tả nó theo quan điểm của người dùng và một ứng cử viên cho một mẫu kiến trúc đã xuất hiện.
Vì bạn đã đề cập đến MVC trong câu hỏi của mình, tôi đoán rằng các mẫu kiến trúc là thứ bạn đang tìm kiếm.
Trong lịch sử, không có hướng dẫn chính thức nào của Google về kiến trúc của ứng dụng, điều này (trong số các lý do khác) dẫn đến sự lộn xộn trong mã nguồn của ứng dụng Android. Trên thực tế, ngay cả ngày nay hầu hết các ứng dụng mà tôi thấy vẫn không tuân theo các thực tiễn tốt nhất của OOP và không hiển thị một tổ chức mã logic rõ ràng.
Nhưng ngày nay tình hình đã khác - Google gần đây đã phát hành thư viện Data Binding , được tích hợp hoàn toàn với Android Studio và thậm chí, đã tung ra một bộ bản thiết kế kiến trúc cho các ứng dụng Android .
Hai năm trước, rất khó để tìm thấy thông tin về MVC hoặc MVP trên Android. Ngày nay, MVC, MVP và MVVM đã trở thành "từ ngữ" trong cộng đồng Android và chúng tôi được bao quanh bởi vô số chuyên gia luôn cố gắng thuyết phục chúng tôi rằng MVx tốt hơn MVy. Theo tôi, thảo luận về việc MVx có tốt hơn MVy hay không là hoàn toàn vô nghĩa vì bản thân các thuật ngữ rất mơ hồ - chỉ cần nhìn vào câu trả lời cho câu hỏi này , và bạn sẽ nhận ra rằng những người khác nhau có thể liên kết những từ viết tắt này với các cấu trúc hoàn toàn khác nhau.
Do việc tìm kiếm một mẫu kiến trúc tốt nhất cho Android đã chính thức được bắt đầu, tôi nghĩ rằng chúng ta sắp thấy một số ý tưởng khác được đưa ra ánh sáng. Tại thời điểm này, thực sự không thể dự đoán mô hình (hoặc mẫu) nào sẽ trở thành tiêu chuẩn công nghiệp trong tương lai - chúng ta sẽ cần chờ xem (tôi đoán đó là vấn đề của một hoặc hai năm).
Tuy nhiên, có một dự đoán tôi có thể đưa ra với độ tin cậy cao: Việc sử dụng thư viện Binding Data sẽ không trở thành một tiêu chuẩn công nghiệp. Tôi tự tin nói rằng vì thư viện Binding dữ liệu (đang triển khai hiện tại) cung cấp tăng năng suất ngắn hạn và một số hướng dẫn kiến trúc, nhưng về lâu dài nó sẽ khiến mã không thể duy trì được. Một khi các hiệu ứng dài hạn của thư viện này sẽ xuất hiện - nó sẽ bị bỏ rơi.
Bây giờ, mặc dù chúng ta có một số loại hướng dẫn và công cụ chính thức ngày hôm nay, cá nhân tôi, không nghĩ rằng những hướng dẫn và công cụ này là những lựa chọn tốt nhất có sẵn (và chúng chắc chắn không phải là những công cụ duy nhất). Trong các ứng dụng của mình, tôi sử dụng triển khai kiến trúc MVC của riêng mình. Nó đơn giản, sạch sẽ, dễ đọc và có thể kiểm tra và không yêu cầu bất kỳ thư viện bổ sung nào.
MVC này không chỉ khác biệt về mặt thẩm mỹ so với các loại khác - nó dựa trên lý thuyết rằng các Hoạt động trong Android không phải là Các thành phần UI , có ý nghĩa rất lớn đối với tổ chức mã.
Vì vậy, nếu bạn đang tìm kiếm một mẫu kiến trúc tốt cho các ứng dụng Android tuân theo các nguyên tắc RẮN , bạn có thể tìm thấy một mô tả về một trong bài viết của tôi về các mẫu kiến trúc MVC và MVP trong Android .