Senarai Kandungan

Dalam kejuruteraan perisian, corak reka bentuk adalah masalah yang biasa berlaku dalam reka bentuk perisian. Corak reka bentuk bukanlah reka bentuk akhir yang boleh diubah terus menjadi kod yang diselesaikan.

Satu masalah utama dalam pembangunan perisian ialah gandingan kod yang ketat , iaitu perubahan kecil dalam satu bahagian kod menyebabkan pengubahsuaian atau pepijat di beberapa bahagian kod lain. Kod tidak mesra ujian unit, dan kod tidak boleh digunakan semula.

Pengenalan

Pada masa ini, banyak pendekatan seni bina boleh didapati seperti MVP, FLUX, MVI, MVVM yang menyelesaikan masalah di atas. Kita boleh menggunakan apa-apa pendekatan untuk mengekalkan kod kami dengan betul supaya semuanya berfungsi dengan baik, ringkasnya, kehidupan pemaju yang bahagia. Artikel ini membincangkan corak reka bentuk MVVM dalam android dan bagaimana kita dapat menyelesaikan masalah sedia ada dengan corak reka bentuk MVVM.

Komponen utama dalam corak reka bentuk MVVM ialah:

  1. Lihat - Memaklumkan ViewModel mengenai tindakan pengguna
  2. ViewModel - Mendedahkan aliran data yang berkaitan dengan Pandangan
  3. DataModel - Abstrak sumber data. ViewModel berfungsi dengan DataModel untuk mendapatkan dan menyimpan data.

Penjelasan Ringkas Corak Reka Bentuk MVVM

Google memperkenalkan Komponen Seni Bina Android, yang termasuk ViewModel dan bukannya Penyampai dan dengan itu bukti bahawa walaupun Google menyokong MVVM.

ViewModel

ViewModels adalah kelas mudah yang berinteraksi dengan lapisan logik / model dan mendedahkan keadaan / data dan tidak tahu oleh siapa atau bagaimana data itu akan digunakan. Hanya Lihat (Aktiviti) rujukan ViewModel dan bukan sebaliknya; Ini menyelesaikan isu gandingan ketat kami. Pandangan tunggal boleh mempunyai rujukan kepada berbilang ViewModels.

➡️
public class MainViewModel extends ViewModel {public MainViewModel() {}public String getText() {return new DataModel().getText();}}View

Dalam Android, aktiviti mewakili pandangan dalam corak reka bentuk MVVM. Pandangan bertanggungjawab untuk paparan visual aplikasi dan input data oleh pengguna. Bahagian ini tidak boleh memproses data dalam apa jua keadaan. Fungsinya hanya untuk mengesan input seperti sentuhan atau leret dan visualisasi.

Corak seni bina ModelView-ViewModel diperkenalkan kepada Android dengan kelahiran perpustakaan DataBinling. Anda boleh mendayakan pengikatan data daripada app.gradle.

➡️
dataBinding{enabled = true}

Add these lines in-app.Gradle inside android{} tag. Then put your XML layout code under tag. This will generate a binding class, and you can access this class from the activity. You can see we can directly access the getText() method from XML.

➡️
<?xml version="1.0" encoding="utf-8"?><layout><data><variablename="mainViewModel"type="com.g.mvvmproject.MainViewModel" /></data><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{mainViewModel.text}"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent" /></RelativeLayout></layout>

Selepas mengesetkanContentView tidak aktif, anda mengesetkan rujukan model pandangan.

➡️
public class MainActivity extends AppCompatActivity {private ActivityMainBinding mActivityMainBinding;private MainViewModel mainViewModel;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);mainViewModel = new MainViewModel();mActivityMainBinding.setMainViewModel(mainViewModel);}}

DataModel

DataModel memegang data aplikasi. Ia tidak boleh bercakap secara langsung dengan Pandangan. Secara amnya, disyorkan untuk mendedahkan data kepada ViewModel melalui Observables.

➡️
public class DataModel {String text="Hello World ";public String getText() {return text + text;}}

Kelebihan menggunakan Corak Reka Bentuk MVVM

  • Kesaksian kod anda meningkat.

Dalam coretan kod di bawah, kami menguji kaedah getText() dalam ViewModel. Anda boleh mengejek data anda dan menyemak hasil yang dijangkakan.

➡️
@RunWith(AndroidJUnit4.class)public class ExampleInstrumentedTest {@Testpublic void emailValidator_CorrectEmailSimple_ReturnsTrue() {String expected = "Hello World Hello World ";assertEquals(expected, new MainViewModel().getText());}}
  • Kod anda dinyahkuman.
  • Struktur pakej lebih mudah dilayari.
  • Projek ini lebih mudah dikekalkan.
  • Pasukan anda boleh menambah ciri baharu dengan lebih cepat.

Kesimpulan

MVVM menggabungkan kelebihan pemisahan kebimbangan yang disediakan oleh MVP sambil memanfaatkan kelebihan pengikatan data. Hasilnya ialah corak di mana model memacu sebanyak mungkin operasi, meminimumkan logik dalam pandangan.

➡️
Contoh mudah pelaksanaan MVVM boleh didapati di sini.

Srinivasa Sainath

Srinivasa Sainath