Coder Social home page Coder Social logo

Comments (4)

DanielNovak avatar DanielNovak commented on August 18, 2024

@rayworks Sorry for the late reply. I am not sure if I understand your question correctly. I usually have some "Service" (not Android Service) classes that contain the business logic, that could be a simple plain singleton (in an ideal case it would be just stateless) and I am not manipulating data or doing too much code in the ViewModel - instead I am calling those service classes to do the work.
The ViewModel class is bound to the lifecycle of the Activity/Fragment, so it doesn't make much sense to me to have another type of "BussinessViewModel" class...

from androidviewmodel.

rayworks avatar rayworks commented on August 18, 2024

@DanielNovak Thank you for the reply.

Yeah, that's what I mean. Is it necessary to have a "business layer" which contains the "Model" and "Service" as you mentioned besides the ViewModel ?

I am not manipulating data or doing too much code in the ViewModel - instead I am calling those

service classes to do the work.

Then how do you organise the "Service" to execute the logic operations and do you involve the related business "Model" or do it via a specific "Service" (on its own)?

from androidviewmodel.

DanielNovak avatar DanielNovak commented on August 18, 2024

Maybe I will try to explain how I usually do it on examples. For example you need to load a list of users from an API, so you have some sort of ApiService which has a method like ApiService.getUsers(ResultCallback result). In my ViewModel I just execute this method and in the callback methods I am sending the data to the View. I am trying to keep the hierarchy flat.

But I am not sending a direct reference of the ViewModel to the ApiService or any other layer. The ViewModel is directly calling other Service classes and handling the results. The ViewModel instance is never shared with other views or layers.

from androidviewmodel.

rayworks avatar rayworks commented on August 18, 2024

OK, good to know the use case as you mentioned. So, is there any logic which remote ApiService can't do on its own? Let's make a assumption, it depends on the local status. eg. the user will pass a test if he/she has scored 60 points or more for all the loaded questions (the interaction with each test item required certainly).

Should this kind of logic also be put into ViewModel or other related business service ?

Thank you for helping clarify things in my mind.

from androidviewmodel.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.