Model View View-Model (MVVM): Getting Started

Поділитися
Вставка
  • Опубліковано 29 вер 2024

КОМЕНТАРІ • 369

  • @theophilus494
    @theophilus494 3 роки тому

    So far the only tutorial on MVVM i eventually got working... i understood it better after watching this tutorial... thank you...

  • @ofir-bar-softr
    @ofir-bar-softr 4 роки тому

    maaaan you just took a complicated subject and made it simple
    thank you!!

  • @nicoqueijo
    @nicoqueijo 5 років тому +80

    Suggestion: enable "Show taps" on your emulator under developer options so the viewer can see exactly where you are pressing when you are demoing stuff.

  • @venukapavarapu1356
    @venukapavarapu1356 5 років тому +1

    dudee...Just excellent this is really what i want

  • @skywalkerpz
    @skywalkerpz 5 років тому +1

    Great video as always, and nice teaching keep it up!

  • @wenbinliu6600
    @wenbinliu6600 3 роки тому +1

    Hey Mitch, I am a fan of your tutorials! One question to you for this tutorial: is it a good way to make the repository as a singleton? If that is the way, the singleton instance will be always alive and the livedata inside won't ever be released. I know this makes sense to the demo scenario because it is pure a places app hence we expect the data to be alive for ever. however I think you can explain a little bit for the cases sometimes we don't want to make the repository as singleton, and it should be bind to the lifecycle owner? Just my 2 cents, I am a rookie to Android, especially to LiveData(Jetpack).

  • @veys7035
    @veys7035 4 роки тому

    I'm confused when you used Singleton Pattern, especially after reading this stackoverflow comment:
    "An Android Service (sub)class cannot be a singleton since the framework requires access to a default constructor for the class. The only reason I can think of for keeping a static reference to the (last) instance for which onStart was called is to simplify some internal code that may happen to reside in static methods.
    Considering that onStart was deprecated a long time ago (as of API level 5), this is most likely an example of bad coding style from early days of Android."

  • @critikalfade
    @critikalfade 4 роки тому

    Nicely explained, thanks!

  • @fipabrate
    @fipabrate 4 роки тому

    Thank you so much, this was more than helpful!

  • @Nidvoraich
    @Nidvoraich 3 роки тому

    Thanks a lot, man, bro! ;)

  • @JayeshBabuAV
    @JayeshBabuAV 4 роки тому +1

    thank u for this tutorial. I have a question. If I want to update 'mIsUpdating' variable from the repository, what is the recommended way to do it?

  • @hemaladani4510
    @hemaladani4510 5 років тому +1

    Beautiful.

  • @adibazhar1115
    @adibazhar1115 4 роки тому

    What other things that I need to understand before learning MVVM other than Room,retrofit ?

  • @atikshakur
    @atikshakur 5 років тому

    Man built a rest api to use that in your tutorials. That way you don't have to write this hard coded values every time.

    • @codingwithmitch
      @codingwithmitch  5 років тому

      I want to. I probably will. Next courses will be:
      1) RxJava (Beginner and Advanced/Expert)
      2) Unit Testing
      3) Building a RestApi with Python (web development) and then making an app to communicate with it

  • @ibrahimalshaikhli6616
    @ibrahimalshaikhli6616 5 років тому +4

    light IDE hurts my eyes :(
    but I do love the video, thanks. I found out today that i'm gonna need MVVM in my company's project :|

    • @codingwithmitch
      @codingwithmitch  5 років тому +5

      Too bad I like white 🕵️

    • @Kevin509wisdom
      @Kevin509wisdom 5 років тому

      Are you using MVVM in your real project? I mean the company's project. Did you meet many problems? How do you like it?

    • @ibrahimalshaikhli6616
      @ibrahimalshaikhli6616 5 років тому

      @@Kevin509wisdom I had a deadline and there was little time to fix the bugs, therefore I used the broadcast receiver instead
      gonna use MVVM on my next project

  • @lakshyasangar6304
    @lakshyasangar6304 4 роки тому

    what emulator do you use ?

  • @shariqkhan2463
    @shariqkhan2463 5 років тому

    Hey sir :) i am learning from your tutorials. i have one thing to ask, why we put addnewvalue method to viewmodel? it should be in the repositories i guess? corrent me if i am wrong thanks :)

    • @codingwithmitch
      @codingwithmitch  5 років тому

      Ya this is just an example. If you really want to see MVVM in action you should watch my course. codingwithmitch.com/courses/rest-api-mvvm-retrofit2/

  • @jasperlardera8724
    @jasperlardera8724 5 років тому

    How about MVP pattern is it also commonly used?

  • @luiseduardogranadaorozco6217
    @luiseduardogranadaorozco6217 5 років тому

    The view model is for each activity, fragment or for each model?

  • @securityguy8353
    @securityguy8353 5 років тому

    Hi Mitch , unfortunately, i am bad in android mobile design, would recommend some tips or course that can help me out to improve my skills in this filed. I always try my best but my clines still complain about my design

  • @sarahismail-ob4is
    @sarahismail-ob4is 4 роки тому

    can I start this tutorial with my own project that already contains recyclerview ?

  • @jiankian
    @jiankian 5 років тому

    一加手机好用吗?

  • @maxmustermann7954
    @maxmustermann7954 4 роки тому +1

    Hey there again,
    amazing video.
    One question: I've read that directly accessing the livedata from the repository is considered to be bad practice because on every new call our UI will need to observe another livedata since it's being recreated.
    I've read that one should use transformations instead (developer.android.com/topic/libraries/architecture/livedata#transform_livedata, Ctl+F search for "DON'T DO THIS").
    Is this correct or am I confusing something? Also if I am correct, how would that change your example?

  • @BehrinHalilov
    @BehrinHalilov 5 років тому +183

    You can make few optimizations :
    1. Optimize the layouts - decrease the layout nesting as much as possible to increase the performance.
    2. Remove one dependency (circle image view) since Glide provides an options to transform an image into circular one.
    3. Avoid non-static or anonymous instances of AsyncTask - leads to memory leak.
    4. Instead of NotifyDataSetChanged that will refresh the whole collection. You can just notify an item position or range that you are updating (NotifyItemInserted or NotifyItemRangeChanged). This will cause less ui calculations and drawing.
    Cheers!

    • @babbintandukar9959
      @babbintandukar9959 5 років тому +12

      wow didn't knew there was notifyiteminserted or notifyitemchanged till now been almost 8 months in android thanks man

    • @arpitkumar4525
      @arpitkumar4525 5 років тому

      Any sources/references on how to use Glide to transform an image into a circular one?

    • @ritvijsaxena7201
      @ritvijsaxena7201 5 років тому +2

      For AsyncTask, it's better to give weak reference using interfaces rather than using non-static instances

    • @sanaebadi97
      @sanaebadi97 4 роки тому +9

      @@arpitkumar4525 Glide.with(context)
      .load(url)
      .apply(RequestOptions.circleCropTransform())
      .into(imageView);

    • @maxmustermann7954
      @maxmustermann7954 4 роки тому +2

      @@ritvijsaxena7201 How would one achieve point 3)? Even the JSONObjectRequest class from Android uses anonymous instances/lambdas.

  • @paweguszczak8631
    @paweguszczak8631 5 років тому +13

    Each time when I'm thinking about learning some new good stuff - you just upload new great video about it. Keep doing your fantastic job man, your tutorials are great!

  • @MrMannyvanny
    @MrMannyvanny 4 роки тому +2

    Other than ViewModel advantage,configuration change, what's the real
    benefit of using MVVM considering all the hassle and fuss involved in
    MVVM along with Retrofit?
    Assume I was to create a simple app that
    just makes network request using Volley without the need of worrying
    screen rotation, and DAO, what's the advantage we are getting for
    banging head learning complex architecture that can be achieved in just
    10 liner code? It's no doubt good for complex projects though since it's
    well structured and Unit testing friendly. But what for a simple app?

  • @roopkishore785
    @roopkishore785 3 роки тому +2

    Honestly speaking, this video is not for complete beginners.

  • @alvaroisea2259
    @alvaroisea2259 5 років тому +17

    I'm a big fan of your tutorials man, keep up with the good work !! (Y)

  • @safees3165
    @safees3165 5 років тому +8

    I also learned that if you need the application context in your viewmodel, just extend Androidviewmodel instead of ViewModel

    • @rickardelimaa
      @rickardelimaa 4 роки тому

      Couldn't that lead to memory leaks? The whole point with the ViewModel is to avoid Context all together.

  • @dineshchoudhary8221
    @dineshchoudhary8221 5 років тому +8

    Hey Mitch, you’re doing a great job!
    I’m sure with time you’ll have a ton of subscribers and views.

  • @EL-cb1nu
    @EL-cb1nu 4 роки тому +1

    Please use the dark theme for your IDE... very hard to watch the video during the night

  • @haykmkrtchyan7093
    @haykmkrtchyan7093 4 роки тому +1

    Thank you. Yeah and if anyone is looking for the github link here is it - github.com/mitchtabian/MVVMExample1

  • @hiteshchalise3988
    @hiteshchalise3988 5 років тому +9

    Wow, just wow, I can't even begin to explain how you've inspired me. Thank you. :)

  • @arifhussain8349
    @arifhussain8349 4 роки тому +1

    All courses should teach using the best practices

  • @junaidijaz41
    @junaidijaz41 5 років тому +4

    you should also make the default constructor of NicePlaceRepository class private. in order to implement the proper singleton method.

  • @mformobileapps
    @mformobileapps 3 роки тому +1

    ViewModelProviders.of(context) is deprecated..what to use instead

    • @AVdubs1
      @AVdubs1 3 роки тому

      Change:
      mViewModel = ViewModelProviders.of(this).get(MainActivityViewModel.class);
      To:
      mViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);

  • @natetolbert3671
    @natetolbert3671 4 роки тому +1

    The way you describe mvvm, it sounds exactly like mvc. The model is the same, the view is the same, the repository/ DAO/ data layer is the same, and the controller in MVC is a wrapper for the application's business logic. You say that the viewmodel in mvvm has the same responsibility. I am struggling to see the difference.

  • @minamcvinnie4629
    @minamcvinnie4629 4 роки тому +2

    These are interesting tutorials. The Java is a little odd to follow, though. Are you going to make versions of these videos in Kotlin?

  • @zhianchen3349
    @zhianchen3349 4 роки тому +1

    Logically clear, and it helps me understand MVVM better (Also the English speech is relatively easy so I can get your point well).
    GOOD TUTORIAL.

  • @tiagooliveira95
    @tiagooliveira95 3 роки тому

    I just started learning MVVM so sorry if my question is stupid, at 23:49 you are making an example of what would be a server request, here you have a reference to `mIsUpdating` but is my understanding that I should have my api/db access code in the repository right? So If I make a server request on my Repository, how can I change `mIsUpdating`?
    I guess I could pass a reference of `mIsUpdating` to the repo but this is just me speculating I don't know if it's the best practice

  • @alimansoor3607
    @alimansoor3607 2 роки тому

    What the actual f__k?
    Mitch I believe you teach really good and did your best
    But I guess I have a really thick skull.
    I sat through the whole video like a monkè

  • @HarshaVardhan-xx6ii
    @HarshaVardhan-xx6ii 2 роки тому

    If only the MutableLiveData objects can change and I understand you can "observe" those changes, why would the regular LiveData have the observe method, if it does not change. Are we always supposed to use the MutableLiveData?

  • @rajeshkadiri5268
    @rajeshkadiri5268 3 роки тому

    Great work Mitch.
    But i have one doubt as per understanding ViewModel data should clear when we click back button in the mobile and activity is destoryed Right. Iam trying to reopen the app then recycler view Items going on increase. Is there any leak the program.

  • @aref111
    @aref111 3 роки тому

    Awesome video , great Job my friend. Thanks for your smooth English and great explanation, I was really frustrated by Indian videos out there.. glg lglgl gl

  • @aditchauhan876
    @aditchauhan876 5 років тому +5

    Finally found an awesome Android teacher .

  • @ilyichelgar4493
    @ilyichelgar4493 4 роки тому

    I dont understand how the list in the adapter automatically changed. We just call notifydatasetchanged(), but doesn't add the new value to the list in adapter. But somehow when the list in livedata is updated, the list in adapter is updated too. How that's work? The list in adapter is just normal list and we doesn't update it too..

  • @sureshr3910
    @sureshr3910 3 роки тому

    Hi ,
    I am unable to Register into your Official website
    I am registering for the very first time but still says "Account with this Username already exists".

  • @lfzhu586
    @lfzhu586 4 роки тому +1

    Good video! But Android team didn’t come up with the name view model, Microsoft did lol

  • @WingChanApp
    @WingChanApp 5 років тому +2

    Just applied your example to my app, and it works. Thank you!

  • @AkshayTaru
    @AkshayTaru 5 років тому +12

    Am I the only one who kept hearing BeautifulLiveData for MutableLiveDate for first 12 mins🤪

  • @VipulSharma-qp7hw
    @VipulSharma-qp7hw Рік тому

    Do we have to use live data if we are using viewmodel and mvvm ? Like I have some values of user name, address, age etc.. so how to store and retrieve them using viewmodel and mvvm ?

  • @wallacethierre9419
    @wallacethierre9419 4 роки тому +1

    Very good explanation and example, you used a simple problem to explain about live data with MVVM arch, congrats.

  • @Chekist2008
    @Chekist2008 4 роки тому

    Is mAdapter != null in 46 row inside your activity? U init mAdapter only in 50 row....

  • @SuyashDixit
    @SuyashDixit 4 роки тому

    I have a question here, it's about ViewModel. Should I have ViewModel per screen or per entity or per business module? For example, I have a user authentication module in my app(login/signup) and then profile page and dashboard page that shows user information. Now, should I create one single ViewModel that gives me all necessary methods like login, signup, logout, getUserDetails or should I have multiple like LoginPageViewModel (having only login method), SignUpPageViewModel (having only signup method), ProfilePageViewModel (having only getUserDetails) and so on?
    Also, if a page requires multiple objects like Users and Bookings then what? Should one ViewModel has both the getters or should I have 2 different ViewModels like DashboardUserViewModel and DashboardBookingsViewModels.

    • @garri5108
      @garri5108 4 роки тому

      The same question....

  • @rizkiadisaputra5971
    @rizkiadisaputra5971 4 роки тому

    why people always using API for MVVM turoial, please we are newbie hate advanced turoial

  • @KalpeshChari
    @KalpeshChari 3 роки тому

    I am still confuse with the adapter you have not used data binding in the xml of recyclerView item

  • @r_yan3531
    @r_yan3531 3 роки тому

    Can you do the same video but using kotlin ? It will be more helpful in 2021

  • @safees3165
    @safees3165 5 років тому +2

    Hey Mitch, with repositories, am I supposed to make a single repository for all network operations on my app or multiple repositories with network operations that are relevant to each other?

    • @codingwithmitch
      @codingwithmitch  5 років тому +4

      Sorry I didn't see this comment until now.
      I would make different repositories to keep it organized.
      Example:
      Suppose you had to query "User" account data and also "News" feed data from a server. I would make two repositories. UserRepository and NewsRepository. Each repository would contain all the methods for managing the data from the server.

    • @safees3165
      @safees3165 5 років тому +1

      @@codingwithmitch thanks for replying! Makes sense. That's what I have been doing so far

  • @CoolAiAvatars
    @CoolAiAvatars 4 роки тому

    I have found a bug. Each time the app is restarted the dataSet is duplicated. To avoid this I have added dataSet.clear(); in the method setNicePlaces()
    Do you noticed this also? Why the array is saved?

  • @touqeerjavaid7333
    @touqeerjavaid7333 3 роки тому

    Hello can any one tell me can we use MVVM for real time chat system in android ap?

  • @dineshchoudhary8221
    @dineshchoudhary8221 5 років тому +8

    Please make a video on Rx Android, please please please

    • @codingwithmitch
      @codingwithmitch  5 років тому +7

      It's on my list

    • @dineshchoudhary8221
      @dineshchoudhary8221 5 років тому +1

      Thanks

    • @xoca7171
      @xoca7171 5 років тому

      @@codingwithmitch Looking forward to it.

    • @Shahzebkhan-mp3fp
      @Shahzebkhan-mp3fp 5 років тому

      @@codingwithmitch please ASAP
      and thank you for making this video :)

    • @codingwithmitch
      @codingwithmitch  5 років тому +1

      @@Shahzebkhan-mp3fp after I finish the rest API I will do an rxjava course

  • @marisawifkinson3383
    @marisawifkinson3383 10 днів тому

    Anderson Susan Lopez Barbara Walker Shirley

  • @harisibrahimovic1991
    @harisibrahimovic1991 3 роки тому

    Anyone had a problem with items not showing until you rotate screen ?

  • @BenthamSheila-c8o
    @BenthamSheila-c8o День тому

    Martinez Barbara Lopez Dorothy Perez Mark

  • @GsusjshGdjsjsg
    @GsusjshGdjsjsg 10 днів тому

    Martin Joseph Harris Betty Jackson Carol

  • @meisammansourzadeh7779
    @meisammansourzadeh7779 5 років тому +1

    The hardest part in implementing MVVM is dealing with different data source like cache and local database and network, so your app can be useful even in situations like poor internet. I hope you use these different data sources in your upcoming tutorial

    • @codingwithmitch
      @codingwithmitch  5 років тому

      I'm going to do a rest API integration with MVVM. I'll prob add a cache too. Depends on how many members I get on my website. I can't spend too much time on a single course

  • @anchitmittal6546
    @anchitmittal6546 5 років тому +2

    The best video for the beginners to understand the MVVM. Thank you

  • @kareemhamed5606
    @kareemhamed5606 5 років тому +3

    much appreciated i always love your work man! you are a legend.

  • @utkarsh5959
    @utkarsh5959 5 років тому +2

    Thanks for the demo of MVVM
    Liked it a lot

  • @krokiet_z_grzybami3688
    @krokiet_z_grzybami3688 3 роки тому +1

    Its harder than MVP, thats why I prefer MVP than MVVM.

  • @xoca7171
    @xoca7171 5 років тому +2

    Thanks man. Very clear explanation.

  • @johnjeremih
    @johnjeremih 3 роки тому

    You are awesome bro!. You might have to do another video because ViewmodelsProviders.of is depricated.

    • @AVdubs1
      @AVdubs1 3 роки тому

      Change:
      mViewModel = ViewModelProviders.of(this).get(MainActivityViewModel.class);
      To:
      mViewModel = new ViewModelProvider(this).get(MainActivityViewModel.class);

  • @FckYouPlz
    @FckYouPlz 4 роки тому

    Line 46 (28:24) - you are getting back the new list from the viewmodel everytime the observer knows about a change but you do nothing with the new list that you receive - so why bother notifying the adapter for any changes as you do nothing with these changes anyway?

  • @TechMalaya
    @TechMalaya 4 роки тому

    Thank you for explaining difference mutablelivedata vs livedata. I am very confused when to used both of them because they are basically almost same.

  • @quentinrufin4025
    @quentinrufin4025 4 роки тому

    I do not find the github repo.
    Anyone has the link?

  • @AnkitSharma-ez9js
    @AnkitSharma-ez9js 4 роки тому +1

    Awesome tutorial!
    How to do this in Kotlin?

  • @TheRahul0110
    @TheRahul0110 4 роки тому

    Hey Mitch! There's a problem. If I actually call an online API in setNicePlaces() method in Repository class, and set the value of dataset in the onResponse(), the LiveData doesn't update the UI with the received data. How should that be implemented? Please help !!!!

  • @mahdimohameddghmahdi3039
    @mahdimohameddghmahdi3039 4 роки тому

    Chouf TV a ajouté une vidéo : « ‎بعد تطبيق حالة الطوارئ بالمغرب..تعقيم‎... »
    il y a 9 heures

  • @chesdasann3345
    @chesdasann3345 3 роки тому

    your video is very helpful and well thought out

  • @bjugdbjk
    @bjugdbjk 4 роки тому

    Mitch, why do we need to use postValue(), Instead you should have used setValue() itself, Since onpostexecute runs on the Main thread, setValue should be good enough right? please correct me if my understanding as wrong.

  • @aviksutar
    @aviksutar 5 років тому

    One of the best. Even Better than some paid Tutorials. Can you make some videos on Mokito and Junit Testing for some real scenarios like fetching data from URL, inserting data into Room DB using MVP or MVVM. I have done a demo project but I can't understand few things. If you can make some tutorials on this it would be great. Also sharing the Git Link: github.com/avik1990/NewsApp . My test cases always passes even when I intentionally write failed cases.

  • @psreedh
    @psreedh 4 роки тому

    can you please share this github link of this sample

  • @strictnonconformist7369
    @strictnonconformist7369 5 років тому

    Google could have done far worse than to create an MVVM framework, but Google didn’t do anything for naming more grand than following naming as created by Microsoft for the ViewModel class, keeping in context MVVM is a Microsoft creation.
    Now, if only all the old Microsoft Windows GUI applications were self-consistent for how they were architected for the GUI code versus the rest, with keeping it separated...

  • @NorbertKates-w2r
    @NorbertKates-w2r 20 днів тому

    Davis Barbara Perez Anthony Martin Margaret

  • @tabarekmohammed6613
    @tabarekmohammed6613 4 роки тому

    Thats good info u are give to the world for free ... big love

  • @theonlyarjun
    @theonlyarjun 5 років тому +1

    whaaaaaaaaaaat !!!! i made the right decision subscribing you man !!!!

  • @PostMeridianLyf
    @PostMeridianLyf 4 роки тому +1

    This helped a lot in my understanding of MVVM. Hopefully I can build my own viewmodel soon

  • @DrSchille
    @DrSchille 3 роки тому +1

    I absolutely love your tutorials. So easy to follow and understand. I love your clean and direct explanation of the topics. Great job! Thank you so much!

  • @oussamasethoum2755
    @oussamasethoum2755 4 роки тому

    what the name of the software used to mirror the phone on the screen here ?

  • @clublulu399
    @clublulu399 4 роки тому +2

    Glad I stumbled upon this. Great explanation!

  • @nareshns7738
    @nareshns7738 Рік тому

    Please continue this topic to adavance..🙏🖤

  • @williamsteinkedemello5217
    @williamsteinkedemello5217 4 роки тому

    Hey friend, greetings from Brazil, do you know if there's any project with this MVVM architecture where i can use as template to build up any app in it? Your video is teaching me a lot about this issue, thank you in advance !

  • @justbrian8286
    @justbrian8286 4 роки тому

    Nice job man. I have a question though. I am working with data from an API, and every time the fragment refreshes, the recyclerview is repopulated and thus the items are all @t can I solve that?

  • @rayalevinson9803
    @rayalevinson9803 5 років тому

    Thank you for the movie. One important comment: new nicePlace is added in MainActivityViewModel (and not in NicePlaceRepository). I would like to see how to run postValue from the NivePlaceRepository. Thank you.

  • @sudhir1274
    @sudhir1274 4 роки тому

    Yet another high quality tutorial from you Mitch. I could not understand how MVVM works. The other tutorials go into details of databases and related topics. The result is MVVM basics are difficult to follow and implement. I did have to watch this tutorial five or six times to understand the MVVM concept. To test my understanding, the kotlin recyclerview tutorial (BlogPost) by you was used as a starting point. Following the instructions in this video and the source code for this tutorial, BlogPost source code was converted to the MVVM model used in this tutorial. Along the way I had to jump to google to solve problems when the intended kotlin code did not work as expected. The code I amended now works like this tutorial including adding new blogs by clicking the floating button. Many, many thanks for such a good tutorial. You are one of my go to channels for Android learning. Appreciate the time you take to post these tutorials.

  • @johnnyshoesofthetwo7374
    @johnnyshoesofthetwo7374 3 роки тому

    I'm more of a MCVMPICVVM guy? It basically takes 2 years to write a simple app, but, it's worth the wait!

  • @Quang1498
    @Quang1498 4 роки тому

    setNicePlaces(); function means a action to get data from webservice, right? it's usually asynchronous, so how data can set in livedata sir? using interface to pass data instead?

  • @royfleming1540
    @royfleming1540 27 днів тому

    Jones Margaret Miller Charles Hall Jeffrey

  • @safees3165
    @safees3165 5 років тому +1

    Look at that I implemented viewmodel into my app last night and this afternoon I see your video!

  • @abdulwahid_mohammed
    @abdulwahid_mohammed 5 років тому +3

    That sounds so great.
    What are the differences between various Android architectures?
    What is the proper ways to use them?

    • @codingwithmitch
      @codingwithmitch  5 років тому +6

      They represent different ways to structure your code. MVC, MVP, MVVM. They all have different advantages/disadvantages. But personally I like MVVM for the reasons discussed in this video.

    • @abdulwahid_mohammed
      @abdulwahid_mohammed 5 років тому +1

      @@codingwithmitch thank you so much sir.

    • @theonlyarjun
      @theonlyarjun 5 років тому +3

      MVP - addressed separation on concerns
      MVVM - addressed data persistence that was lacked in MVP

    • @codingwithmitch
      @codingwithmitch  5 років тому

      @@theonlyarjun good way to put it

    • @kaushiknits0307
      @kaushiknits0307 5 років тому

      @@codingwithmitch I have seen MVP is used to make test driven development which widen the scope for JUNIT testing , but I never saw MVVM being used for test driven development. So my question is whether MVVM can also be used for TDD ?