Sobes.tech
Middle

Miks on vaja rakenduses eraldada kuvamine ja äriloogika?

sobes.tech AI

Vastus AI-lt

Jagunemine vaate ja äriloogika vahel parandab:

  • Testitavust: Äriloogikat saab testida sõltumatult kasutajaliidesest.
  • Hooldatavust: Muudatused kasutajaliideses ei mõjuta äriloogikat ja vastupidi. Lihtsustab refaktoreerimist.
  • Skaleeritavust: Erinevad rakenduse osad saavad arendada paralleelselt.
  • Taaskasutatavust: Äriloogikat saab kasutada erinevate vaadete puhul (näiteks mobiilirakenduses ja veebiversioonis).
  • Paindlikkust: On lihtsam muuta kasutajaliidese raamistikke või ärireegleid.

Tüüpilised arhitektuurimustrid, mis teostavad seda jagunemist:

  • MVC (Model-View-Controller)
  • MVP (Model-View-Presenter)
  • MVVM (Model-View-ViewModel)

Android arenduses kasutatakse sageli MVVM-i koos Architecture Components'iga (ViewModel, LiveData).

Näide jagunemisest:

// Fragment (Vaade) - vastutab kuvamise eest
class UserProfileFragment : Fragment() {
    private val viewModel: UserProfileViewModel by viewModels()

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        viewModel.userName.observe(viewLifecycleOwner) { name ->
            userNameTextView.text = name
        }
        loadUserButton.setOnClickListener {
            viewModel.loadUserData()
        }
    }
}
// ViewModel (Äriloogika ja seisund) - haldab andmeid
class UserProfileViewModel : ViewModel() {
    private val _userName = MutableLiveData<String>()
    val userName: LiveData<String> = _userName

    fun loadUserData() {
        // Siin toimub äriloogika: API päring, andmete töötlemine
        // ... andmete laadimise simulatsioon
        _userName.value = "Jaan Tamm"
    }
}