Pola MVC di Android

497

Apakah mungkin untuk menerapkan pola model-view-controller di Java untuk Android?

Atau sudah dilaksanakan melalui Kegiatan? Atau ada cara yang lebih baik untuk menerapkan pola MVC untuk Android?

Mohit Deshpande
sumber
64
Pertanyaan Anda sangat bagus. Tetapi jawaban yang ditandai sebagai solusi tidak benar menurut saya. Mungkin menyesatkan beberapa orang.
Saghar
4
Lihat 2 posting saya mulai di sini Arsitektur Android: MV?
Dori
1
Juga apakah ada seperangkat aturan tambahan yang harus diikuti untuk mematuhi MVC atau apakah pengembangan Android sudah disesuaikan dengan MVC karena Activity, XML, Resources?
Flame of udun
3
@Dori, saya perbaiki tautan Anda: Arsitektur Android: MV?
Andreybeta
Artikel ini sama persis dengan apa yang Anda cari, MVC di android melalui contoh praktis: digigene.com/architecture/android-architecture-part-2-mvc
Ali Nem

Jawaban:

239

Di Android Anda tidak memiliki MVC, tetapi Anda memiliki yang berikut:

  • Anda mendefinisikan antarmuka pengguna Anda dalam berbagai file XML berdasarkan resolusi, perangkat keras, dll.
  • Anda menentukan sumber daya Anda dalam berbagai file XML berdasarkan lokal, dll.
  • Anda memperluas klausa seperti ListActivity , TabActivity dan memanfaatkan file XML oleh inflaters .
  • Anda dapat membuat kelas sebanyak yang Anda inginkan untuk logika bisnis Anda.
  • Banyak Utils telah ditulis untuk Anda - DatabaseUtils, Html.
Pentium10
sumber
3
@JDPekham, mengapa Anda mengatakan "Anda tidak dapat membuat instance aktivitas tanpa berbicara dengan tata letak / tampilan"? Membuat instance suatu aktivitas tidak memerlukan berbicara dengan view, pada kenyataannya berbicara dengan view bukanlah bagian dari Instansiasi aktivitas. Anda BISA (tetapi tidak harus) memanggil berbagai metode Kegiatan yang berinteraksi dengan pandangan Anda kapan dan jika Anda mau. Pertanyaan kedua: Mengasumsikan Kegiatan dimaksudkan untuk mengambil peran "pengontrol" (saya percaya banyak Android dev melihatnya seperti itu) mengapa tidak berbicara dengan pandangan Anda dari Aktivitas?
8
Bagi siapa saja yang mengatakan bahwa "Android adalah MVC", silakan coba Backbone.js (ya, sisi klien js) selama seminggu, dan kemudian kembali dan mengatakan bahwa "Android adalah MVC". Anda akhirnya akan memahami pertanyaan dan mengapa kami terus bertanya :)
Mark Peterson
14
"Di Android kamu tidak punya MVC" ???? Di Android, seperti dalam bahasa lain, Anda memiliki MVC jika Anda ingin MVC.
Lorenzo Barbagli
1
@LorenzoBarbagli Maksudnya, Android tidak menerapkan MVC dalam aplikasi berdasarkan desain (seperti yang dilakukan iOS). Anda harus menerapkan rasa MVC, MVP, atau yang lainnya jika Anda ingin mencapai apa yang disediakan MVC - yaitu pemisahan masalah dan Model yang terisolasi dan mudah diuji.
Piovezan
Tidak. Jelas ada MVC di Android, tetapi lebih implisit. Ini hanya diimplementasikan dengan cara yang berbeda sesuai dengan bagaimana Android menyusun segalanya.
6rchid
229

Tidak ada pola MVC yang unik secara universal. MVC adalah konsep daripada kerangka kerja pemrograman yang solid. Anda dapat mengimplementasikan MVC Anda sendiri di platform apa pun. Selama Anda tetap pada ide dasar berikut, Anda menerapkan MVC:

  • Model: Apa yang dirender
  • Lihat: Cara membuat
  • Kontroler: Acara, input pengguna

Pikirkan juga seperti ini: Ketika Anda memprogram model Anda, model tersebut tidak perlu khawatir tentang rendering (atau kode spesifik platform). Model akan mengatakan kepada pandangan, saya tidak peduli apakah rendering Anda adalah Android atau iOS atau Windows Phone, ini yang saya butuhkan untuk Anda render. Tampilan hanya akan menangani kode rendering khusus platform.

Ini sangat berguna ketika Anda menggunakan Mono untuk berbagi model untuk mengembangkan aplikasi lintas platform.

Ramon Chan
sumber
12
Meskipun itu benar, dan memang benar, ini adalah teori dan orang praktis!
TWiStErRob
1
@TWiStErRob Tetapi pola desain adalah teori, ide abstrak yang tidak hanya memiliki satu cara untuk mewujudkannya. Memproklamirkan “Saya tidak ingin memahami MVC dalam teori, saya hanya ingin menerapkannya” terdengar bagi saya seperti itu dapat menghasilkan “Saya akan meletakkan mesin cuci di dapur saya karena mesin cuci menerapkan pola Cleaner ™ dan dapur membutuhkan itu ”.
Lukas Juhrich
1
Saya pikir contoh sangat berharga karena mereka menunjukkan apa yang orang lain hasilkan. Seseorang dapat memperbaiki mereka dan belajar dari usaha mereka. Tidak perlu bagi semua orang untuk menemukan kembali roda. Dalam konteks Android dan siklus hidupnya yang kompleks ada masalah yang tidak ditangani dalam pola desain, tetapi semua orang akan menghadapinya. Inilah yang saya maksudkan dengan praktis.
TWiStErRob
47

Tindakan, pandangan, dan aktivitas pada Android adalah cara yang paling baik untuk bekerja dengan UI Android dan merupakan implementasi dari pola model-view-viewmodel (MVVM) , yang secara struktural serupa (dalam keluarga yang sama dengan) model-view –Kontrol.

Sejauh pengetahuan saya, tidak ada cara untuk keluar dari model ini. Ini mungkin dapat dilakukan, tetapi Anda mungkin akan kehilangan semua manfaat yang dimiliki model yang ada dan harus menulis ulang layer UI Anda sendiri untuk membuatnya bekerja.

Derick Bailey
sumber
29

Setelah beberapa pencarian, jawaban paling masuk akal adalah sebagai berikut:

MVC sudah diterapkan di Android sebagai:

  1. Lihat = tata letak, sumber daya, dan kelas bawaan seperti yang Buttonditurunkan android.view.View.
  2. Kontroler = Aktivitas
  3. Model = kelas yang mengimplementasikan logika aplikasi

(Ini omong-omong menyiratkan tidak ada logika domain aplikasi dalam aktivitas.)

Hal yang paling masuk akal bagi pengembang kecil adalah mengikuti pola ini dan tidak mencoba melakukan apa yang Google putuskan untuk tidak lakukan.

Catatan: Aktivitas kadang-kadang dimulai kembali, jadi tidak ada tempat untuk data model (cara termudah untuk menyebabkan restart adalah dengan menghilangkan android:configChanges="keyboardHidden|orientation"dari XML dan menghidupkan perangkat Anda).

EDIT

Kita mungkin berbicara tentang MVC , tetapi akan dikatakan FMVC , Framework - Model - View - Controller . The Kerangka (OS Android) membebankan gagasan tentang komponen siklus hidup dan peristiwa terkait, dan dalam prakteknya Pengendali ( Activity/ Service/ BroadcastReceiver) adalah pertama-tama bertanggung jawab untuk mengatasi ini Kerangka -imposed peristiwa (seperti onCreate () ). Haruskah input pengguna diproses secara terpisah? Meskipun harus, Anda tidak dapat memisahkannya, acara input pengguna juga berasal dari Android.

Lagi pula, semakin sedikit kode yang tidak spesifik untuk Android yang Anda masukkan ke Activity/ Service/ Anda BroadcastReceiver, semakin baik.

18446744073709551615
sumber
3
Aktivitas memiliki akses langsung ke UI, sedangkan di MVC controller seharusnya tidak tahu tentang tampilan (hanya sebaliknya).
Konrad Morawski
2
@KonradMorawski Hmmm .... A View mengetahui tentang menampilkan hal-hal dan tentang Pengendali ? Seorang anak, katakanlah, Buttonmengetahui tentang Pengendali ? Tampaknya lebih logis bahwa Views hanya tahu tentang menampilkan sesuatu. Dan dengan mempertimbangkan bahwa Model hanya tahu tentang sifat data, inilah sebabnya Pengendali diperlukan: sesuatu harus tahu baik tentang Model dan Tampilan .
18446744073709551615
4
Jelas, View perlu tahu tentang controller untuk mendelegasikan kejadian ke controller. Pengontrol mengikutinya hingga model dan menginformasikan View apa hasilnya (sehingga dapat menampilkannya). Pengontrol tidak mengembang tampilan (sedangkan Aktivitas tidak), juga tidak seharusnya tahu apa-apa tentang tombol, kotak teks, daftar dll. (Sedangkan Aktivitas tahu).
Konrad Morawski
1
Saya pikir Services datang di bawah payung controller juga
CL22
1
Pernah dengar pengamat? Pemisahan terbaik yang ditemukan sejauh ini adalah ketika 1. controller hanya memiliki instance model, 2. model tidak memiliki pengetahuan tentang controller atau view tetapi view dapat mendaftar sebagai model observer (jadi model agak tahu tentang view tetapi dia tidak tahu siapa itu dan dia tidak peduli) - ketika model dilakukan dengan memuat data, ia memberi tahu semua pengamat (biasanya 1) dan 3. tampilan hanya memiliki contoh model untuk menarik data keluar dari itu. Dengan cara ini hanya ada 2 dependecies untuk semua kerangka kerja MVC. Saya pikir 2 adalah minimum jadi seharusnya tata letak yang terbaik.
Srneczek
18

Tidak ada pola MVC tunggal yang bisa Anda patuhi. MVC hanya menyatakan kurang lebih bahwa Anda tidak boleh bergaul dengan data dan melihat, sehingga misalnya pandangan bertanggung jawab untuk memegang data atau kelas yang memproses data secara langsung mempengaruhi tampilan.

Namun demikian, cara Android menangani kelas dan sumber daya, Anda terkadang dipaksa untuk mengikuti pola MVC. Yang lebih rumit menurut saya adalah aktivitas yang kadang-kadang bertanggung jawab untuk tampilan, tetapi tetap bertindak sebagai pengontrol pada saat yang sama.

Jika Anda mendefinisikan tampilan dan tata letak dalam file XML, muat sumber daya Anda dari folder res, dan jika Anda menghindari lebih atau kurang untuk membaur hal-hal ini dalam kode Anda, maka Anda tetap mengikuti pola MVC.

RoflcoptrException
sumber
14

Anda dapat mengimplementasikan MVC di Android, tetapi itu tidak "didukung asli" dan membutuhkan upaya.

Yang mengatakan, saya pribadi cenderung ke arah MVP sebagai pola arsitektur yang jauh lebih bersih untuk pengembangan Android. Dan dengan mengatakan MVP saya maksudkan ini:

masukkan deskripsi gambar di sini

Saya juga memposting jawaban yang lebih rinci di sini .

Setelah bermain dengan berbagai pendekatan untuk implementasi MVC / MVP di Android, saya datang dengan pola arsitektur yang masuk akal, yang saya jelaskan dalam posting ini: MVP dan Pola Arsitektur MVC di Android .

Vasiliy
sumber
14

Sumber daya terbaik yang saya temukan untuk mengimplementasikan MVC di Android adalah posting ini :

Saya mengikuti desain yang sama untuk salah satu proyek saya, dan itu berhasil dengan baik. Saya seorang pemula di Android, jadi saya tidak bisa mengatakan bahwa ini adalah solusi terbaik.

Saya membuat satu modifikasi: Saya membuat model dan pengontrol untuk setiap aktivitas di kelas aplikasi sehingga ini tidak dibuat kembali ketika mode landscape-portrait berubah.

Hervé Donner
sumber
8
akan bagus untuk mendapatkan ringkasan jika artikel tersebut dihapus satu hari.
pqsk
12

Saya setuju dengan JDPeckham, dan saya percaya bahwa XML saja tidak cukup untuk mengimplementasikan bagian UI aplikasi.

Namun, jika Anda menganggap Aktivitas sebagai bagian dari tampilan maka penerapan MVC cukup mudah. Anda dapat mengganti Aplikasi (seperti yang dikembalikan oleh getApplication () di Aktivitas) dan di sinilah Anda dapat membuat pengontrol yang bertahan selama masa aplikasi Anda.

(Atau Anda dapat menggunakan pola tunggal seperti yang disarankan oleh dokumentasi Aplikasi)

pengetikan
sumber
12

MVC- Arsitektur di Android Lebih Baik Ikuti MVP saja daripada MVC di android. Namun tetap menurut jawaban pertanyaan ini bisa menjadi solusi

Masukkan deskripsi gambar di sini

Deskripsi dan Pedoman

     Controller -
        Activity can play the role.
        Use an application class to write the
        global methods and define, and avoid
        static variables in the controller label
    Model -
        Entity like - user, Product, and Customer class.
    View -
        XML layout files.
    ViewModel -
        Class with like CartItem and owner
        models with multiple class properties
    Service -
        DataService- All the tables which have logic
        to get the data to bind the models - UserTable,
        CustomerTable
        NetworkService - Service logic binds the
        logic with network call - Login Service
Helpers -
        StringHelper, ValidationHelper static
        methods for helping format and validation code.
SharedView - fragmets or shared views from the code
        can be separated here

AppConstant -
        Use the Values folder XML files
        for constant app level

CATATAN 1:

Sekarang, inilah keajaiban yang bisa Anda lakukan. Setelah Anda mengklasifikasikan potongan kode, tulis kelas antarmuka dasar seperti, IEntity dan IService. Nyatakan metode umum. Sekarang buat kelas abstrak BaseService dan mendeklarasikan set metode Anda sendiri dan memiliki pemisahan kode.

CATATAN 2: Jika aktivitas Anda menghadirkan banyak model daripada menulis kode / logika dalam aktivitas, lebih baik membagi pandangan menjadi beberapa bagian. Maka itu lebih baik. Jadi di masa depan jika ada model lain yang diperlukan untuk muncul di tampilan, tambahkan satu fragmen lagi.

CATATAN 3: Pemisahan kode sangat penting. Setiap komponen dalam arsitektur harus independen tidak memiliki logika tergantung Jika kebetulan jika Anda memiliki sesuatu yang bergantung pada logika, tulis kelas logika pemetaan di antaranya. Ini akan membantu Anda di masa depan.

DropAndTrap
sumber
11

Pembuatan Android UI menggunakan tata letak, sumber daya, aktivitas, dan maksud adalah implementasi dari pola MVC. Silakan lihat tautan berikut untuk lebih lanjut tentang ini - http://www.cs.otago.ac.nz/cosc346/labs/COSC346-lab2.2up.pdf

mirror untuk pdf

Arunabh Das
sumber
7
tautannya rusak Pak
Rat-a-tat-a-tat Ratatouille
2
Tampaknya file COSC346-lab2.2up.pdf ini tidak termasuk detail lengkap.
james
9

Pola MVC Android (jenis) diimplementasikan dengan kelas Adaptornya . Mereka mengganti controller dengan "adaptor." Deskripsi untuk status adaptor:

Objek Adapter bertindak sebagai jembatan antara AdapterView dan data yang mendasari untuk tampilan itu.

Saya hanya melihat ini untuk aplikasi Android yang membaca dari database, jadi saya belum tahu seberapa baik kerjanya. Namun, sepertinya sedikit seperti arsitektur Model-View-Delegate Qt, yang mereka klaim merupakan langkah dari pola MVC tradisional. Setidaknya pada PC, pola Qt bekerja cukup baik.

Ben
sumber
9

Meskipun pos ini tampaknya sudah tua, saya ingin menambahkan dua berikut ini untuk menginformasikan tentang perkembangan terbaru di bidang ini untuk Android:

android-binding - Menyediakan kerangka kerja yang memungkinkan pengikatan widget tampilan android ke model data. Ini membantu untuk menerapkan pola MVC atau MVVM di aplikasi android.

roboguice - RoboGuice mengeluarkan dugaan pembangunan. Suntikkan View, Resource, System Service, atau objek lain apa pun, dan biarkan RoboGuice mengurus detailnya.

Mahendra Liya
sumber
9

Model View Controller (MVC)

masukkan deskripsi gambar di sini


Deskripsi:

  • Ketika kita harus proyek besar utama dalam pengembangan perangkat lunak, MVC umumnya digunakan karena ini adalah cara universal untuk mengatur proyek.
  • Pengembang baru dapat dengan cepat beradaptasi dengan proyek
  • Membantu dalam pengembangan proyek-proyek besar dan lintas platform juga.

Pola MVC pada dasarnya adalah ini:

  • Model: Apa yang ditampilkan. Ini bisa menjadi sumber data (Mis: Server, data mentah di aplikasi)
  • Lihat: Bagaimana ini ditampilkan. Ini bisa menjadi xml. Dengan demikian bertindak sebagai filter presentasi. Tampilan dilampirkan ke modelnya (atau bagian model) dan mendapatkan data yang diperlukan untuk presentasi.
  • Pengendali: Menangani acara seperti input pengguna. Inilah kegiatannya

Fitur penting dari MVC: Kita dapat memodifikasi Model atau Tampilan atau Pengontrol masih tidak memengaruhi yang lain

  • Katakanlah kita mengubah warna dalam tampilan, ukuran tampilan atau posisi tampilan. Dengan melakukan itu tidak akan mempengaruhi model atau pengontrol
  • Katakanlah kita mengubah model (alih-alih data yang diambil dari server mengambil data dari aset) tetap saja tidak akan memengaruhi tampilan dan pengontrol
  • Katakanlah kita mengubah Pengontrol (Logika dalam aktivitas) itu tidak akan mempengaruhi model dan tampilan
Setan
sumber
2
Saya hanya pernah menggunakan controller sebagai saluran untuk bagaimana tampilan / model menyampaikan informasi. Saya ingin tahu bagaimana Anda memiliki model dan melihat kontak langsung satu sama lain. Apakah Anda memiliki sumber atau contoh implementasi ini?
Jacksonkr
7

Saya pikir penjelasan sederhana yang paling berguna ada di sini: http://www.cs.otago.ac.nz/cosc346/labs/COSC346-lab2.2up.pdf

Dari semua yang saya lihat dan baca di sini, menerapkan semua hal ini membuatnya lebih sulit dan tidak cocok dengan bagian-bagian lain dari android.

Memiliki aktivitas mengimplementasikan pendengar lain sudah merupakan cara standar Android. Cara yang paling tidak berbahaya adalah dengan menambahkan Java Observer seperti yang dijelaskan oleh slide dan kelompokkan onClick dan jenis tindakan lainnya ke dalam fungsi yang masih ada dalam Activity.

Cara Android adalah bahwa Activity melakukan keduanya. Melawannya tidak benar-benar membuat memperluas atau melakukan pengkodean di masa depan lebih mudah.

Saya setuju dengan posting ke-2 . Ini semacam sudah diterapkan, hanya saja tidak seperti orang terbiasa. Apakah itu di file yang sama atau tidak, sudah ada pemisahan. Tidak perlu membuat pemisahan ekstra untuk membuatnya cocok dengan bahasa dan OS lain.

Edmund Chang
sumber
6
Tautan yang Anda berikan rusak.
mmBs
6

Mengejutkan melihat tidak ada tulisan di sini yang menjawab pertanyaan itu. Mereka terlalu umum, tidak jelas, salah atau tidak membahas implementasi di android.

Di MVC, layer View hanya tahu cara menampilkan antarmuka pengguna (UI). Jika ada data yang diperlukan untuk ini, ia mendapatkannya dari lapisan Model . Tetapi View TIDAK langsung meminta model untuk menemukan data, ia melakukannya melalui Controller . Jadi Pengendali  memanggil Model untuk memberikan data yang diperlukan untuk Tampilan . Setelah data siap, Controller menginformasikan View bahwa data siap untuk diperoleh dari Model . Sekarang View bisa mendapatkan data dari Model .

Alur ini dapat diringkas sebagai berikut:

masukkan deskripsi gambar di sini

Perlu dicatat bahwa View dapat mengetahui tentang ketersediaan data dalam  Model  baik melalui Pengendali - juga dikenal sebagai  MVC Pasif - atau dengan mengamati data dalam Model dengan mendaftarkan yang dapat diamati ke dalamnya, yaitu MVC Aktif .

Pada bagian implementasi, salah satu hal pertama yang terlintas dalam pikiran adalah komponen Android apa yang harus digunakan untuk View ? Activity  atau Fragment ?

Jawabannya adalah tidak masalah dan keduanya bisa digunakan. The View harus dapat menyajikan user interface (UI) pada perangkat dan merespon interaksi pengguna dengan UI. Keduanya Activity  dan Fragment  menyediakan metode yang diperlukan untuk ini.

Pada contoh aplikasi yang digunakan dalam artikel ini saya telah menggunakan Activity untuk View lapisan, tetapi Fragment  juga dapat digunakan.

Aplikasi sampel lengkap dapat ditemukan di cabang 'mvc' dari repo GitHub saya di sini .

Saya juga telah berurusan dengan pro dan kontra dari arsitektur MVC di android melalui contoh di sini .

Bagi mereka yang tertarik, saya telah memulai serangkaian artikel tentang arsitektur aplikasi android di sini di mana saya membandingkan berbagai arsitektur, yaitu MVC, MVP, MVVM, untuk pengembangan aplikasi android melalui aplikasi kerja yang lengkap.

Ali Nem
sumber
Saya telah mengambil kursus arsitektur di mana instruktur menyatakan bahwa kegiatan dan fragmen tidak boleh digunakan sebagai tampilan dan pada kenyataannya harus menjadi pengendali dan tampilan harus file yang terpisah. Apakah Anda memiliki pendapat atau alasan mengapa ini tidak seharusnya?
brandonx
Saya pikir instruktur tidak akurat dalam hal itu. Memilih aktivitas atau fragmen sebagai pengontrol berarti meneruskan konteks ke pengontrol. Di sisi lain tampilan juga perlu konteks untuk menggambar ke layar. Dengan cara ini, yaitu meneruskan konteks ke controller, membuat aplikasi rentan terhadap kebocoran memori dan saya percaya controller tidak boleh membawa status.
Ali Nem
5

Bosan dengan bencana MVx di Android Saya baru-baru ini membuat perpustakaan kecil yang menyediakan aliran data searah dan mirip dengan konsep MVC: https://github.com/zserge/anvil

Pada dasarnya, Anda memiliki komponen (aktivitas, fragmen, dan grup tampilan). Di dalam Anda menentukan struktur dan gaya lapisan tampilan. Anda juga menentukan bagaimana data harus terikat pada tampilan. Akhirnya, Anda dapat mengikat pendengar di tempat yang sama.

Kemudian, setelah data Anda diubah - metode global "render ()" akan dipanggil, dan pandangan Anda akan diperbarui secara cerdas dengan data terbaru.

Berikut adalah contoh komponen yang memiliki segalanya di dalamnya untuk kekompakan kode (tentu saja Model dan Pengontrol dapat dengan mudah dipisahkan). Di sini "count" adalah model, metode view () adalah view, dan "v -> count ++" adalah controller yang mendengarkan tombol klik dan memperbarui model.

public MyView extends RenderableView {
  public MyView(Context c) {
      super(c);
  }

  private int count = 0;

  public void view() {
    frameLayout(() -> {              // Define your view hierarchy
      size(FILL, WRAP);
      button(() -> {
          textColor(Color.RED);      // Define view style
          text("Clicked " + count);  // Bind data
          onClick(v -> count++);     // Bind listeners
      });
    });
  }

Dengan model dan pengontrol yang terpisah akan terlihat seperti:

button(() -> {
   textColor(Color.RED);
   text("Clicked " + mModel.getClickCount());
   onClick(mController::onButtonClicked);
});

Di sini, di setiap tombol klik nomor akan meningkat, kemudian "render ()" akan dipanggil, dan teks tombol akan diperbarui.

Sintaksnya menjadi lebih menyenangkan jika Anda menggunakan Kotlin: http://zserge.com/blog/anvil-kotlin.html . Juga, ada sintaksis alternatif untuk Jawa tanpa lambdas.

Perpustakaan itu sendiri sangat ringan, tidak memiliki dependensi, tidak menggunakan refleksi, dll.

(Penafian: Saya penulis perpustakaan ini)

zserge
sumber
4

Menurut penjelasan yang dijelaskan tim Xamarin (di MVC iOS "Saya tahu itu tampak aneh, tapi tunggu sebentar"):

  • Model (data atau logika aplikasi),
  • Tampilan (antarmuka pengguna), dan
  • Pengontrol (kode di belakang).

Saya bisa mengatakan ini:

Model pada Android hanyalah objek parcelable. Tampilannya adalah tata letak XML, dan pengontrolnya adalah (aktivitas + fragmennya).

* Ini hanya pendapat saya, bukan dari sumber atau buku apa pun.

zaPlayer
sumber
3

Saya telah melihat bahwa banyak orang mengatakan MVC sudah diterapkan di Android, tetapi itu tidak benar. Android tidak mengikuti MVC secara default.

Karena saya tidak Google akan pernah memaksakan pembatasan implementasi MVC seperti iPhone, tetapi terserah pengembang yang berpola atau teknik yang mereka inginkan dalam proyek mereka, Dalam aplikasi kecil atau sederhana penggunaan MVC tidak diperlukan, tetapi sebagai aplikasi tumbuh dan semakin rumit dan membutuhkan modifikasi kodenya di tahun-tahun kemudian, maka muncul kebutuhan pola MVC di Android.

Ini memberikan cara mudah untuk memodifikasi kode dan juga membantu dalam pengurangan masalah. Jika Anda ingin menerapkan MVC di Android, ikuti tautan di bawah ini dan nikmati penerapan MVC di proyek Anda.

http://www.therealjoshua.com/2011/11/android-architecture-part-1-intro/

Tetapi saat ini saya pikir MVP bersama dengan Android Architectural Pattern adalah salah satu pilihan pengembang terbaik yang harus digunakan untuk aplikasi android yang bersih dan kuat.

Lucky Rana
sumber
1
Sepakat. Android memiliki cukup fleksibilitas untuk menggantung diri. Aktivitas Anda itu dapat dengan cepat menjadi raksasa dan rumit karena menangani ketiga aspek MVC.
Scott Biggs
2

Ketika kami menerapkan MVC, MVVM , atau Model Presentasi ke aplikasi Android, yang benar-benar kami inginkan adalah memiliki proyek terstruktur yang jelas dan yang lebih penting lebih mudah untuk unit test.

Saat ini, tanpa kerangka kerja pihak ketiga, Anda biasanya memiliki banyak kode (seperti addXXListener (), findViewById (), dll.), Yang tidak menambah nilai bisnis apa pun.

Terlebih lagi, Anda harus menjalankan tes unit Android alih-alih tes JUnit normal, yang membutuhkan waktu lama untuk dijalankan dan membuat tes unit agak tidak praktis. Untuk alasan ini, beberapa tahun yang lalu kami memulai proyek sumber terbuka, RoboBinding - Kerangka kerja Model Presentasi yang mengikat data untuk platform Android.

RoboBinding membantu Anda menulis kode UI yang lebih mudah dibaca, diuji, dan dirawat. RoboBinding menghapus kebutuhan kode yang tidak perlu seperti addXXListener atau lebih , dan menggeser logika UI ke Model Presentasi, yang merupakan POJO dan dapat diuji melalui tes JUnit normal . RoboBinding sendiri hadir dengan lebih dari 300 tes JUnit untuk memastikan kualitasnya.

Cheng
sumber
1

Dalam pemahaman saya, cara Android menangani pola MVC adalah seperti:

Anda memiliki Kegiatan, yang berfungsi sebagai pengontrol. Anda memiliki kelas yang tanggung jawabnya untuk mendapatkan data - model, dan kemudian Anda memiliki kelas Tampilan yang merupakan tampilan.

Ketika berbicara tentang tampilan, kebanyakan orang berpikir hanya untuk bagian visualnya yang didefinisikan dalam xml. Jangan lupa bahwa View juga memiliki bagian program dengan konstruktor, metode, dan lain-lain, yang didefinisikan dalam kelas java.

Rados
sumber