đ āϰিāĻĒোāĻিāĻāϰি āĻāύ্āĻাāϰāĻĢেāϏ (Repository Interface) – āϏāĻšāĻ āĻাāώাā§ āĻŦ্āϝাāĻ্āϝা
đ āϰিāĻĒোāĻিāĻāϰি āĻāύ্āĻাāϰāĻĢেāϏ (Repository Interface) – āϏāĻšāĻ āĻাāώাā§ āĻŦ্āϝাāĻ্āϝা
āĻ ্āϝাāύ্āĻĄ্āϰāϝ়েāĻĄ āĻ ্āϝাāĻĒ āĻĄেāĻেāϞāĻĒāĻŽেāύ্āĻে MVVM (Model-View-ViewModel) āĻāϰ্āĻিāĻেāĻāĻাāϰে āĻĄাāĻা āĻŽ্āϝাāύেāĻāĻŽেāύ্āĻāĻে āϏুāύ্āĻĻāϰāĻাāĻŦে āĻুāĻিā§ে āϰাāĻāϤে Repository Pattern āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰা āĻšā§।
đ¯ āϰিāĻĒোāĻিāĻāϰি āĻী?
āϰিāĻĒোāĻিāĻāϰি (Repository) āĻšāϞো āĻāĻāĻি āĻŽāϧ্āϝāϏ্āĻĨāϤাāĻাāϰী (Mediator), āϝা āĻĄাāĻাāĻŦেāĻ, API āĻŦা āϞোāĻাāϞ āĻĢাāĻāϞ āĻĨেāĻে āĻĄাāĻা āĻāύāϤে āĻāĻŦং āϏংāϰāĻ্āώāĻŖ āĻāϰāϤে āĻŦ্āϝāĻŦāĻšৃāϤ āĻšā§।
đ āϏāĻšāĻ āĻāϰে āĻŦāϞāϞে, āϰিāĻĒোāĻিāĻāϰি āĻšāϞো āĻāĻāĻি "āĻĄাāĻা āĻŽ্āϝাāύেāĻাāϰ" āϝা āĻāĻĒāύাāϰ āĻ ্āϝাāĻĒেāϰ āĻŦিāĻিāύ্āύ āĻĄাāĻা āϏোāϰ্āϏেāϰ āϏাāĻĨে āϝোāĻাāϝোāĻ āĻāϰে।
⚡ āϰিāĻĒোāĻিāĻāϰি āĻেāύ āĻĻāϰāĻাāϰ?
✅ āĻĄাāĻা āϏোāϰ্āϏ āĻĒāϰিāĻŦāϰ্āϤāύ āĻāϰāϞে āĻোāĻĄে āĻŦā§ āĻĒāϰিāĻŦāϰ্āϤāύ āύা āĻāϰেāĻ āĻাāĻ āĻাāϞাāύো āϝাā§।
✅ ViewModel āĻŦা UI āϞেā§াāϰāĻে āϏāϰাāϏāϰি āĻĄাāĻাāĻŦেāĻ/API-āĻāϰ āϏাāĻĨে āϝুāĻ্āϤ āύা āĻāϰে āϰিāĻĒোāĻিāĻāϰিāϰ āĻŽাāϧ্āϝāĻŽে āĻĄাāĻা āĻāύা āĻšā§, āϝা āĻোāĻĄ āĻ্āϞিāύ āĻ āĻŽāĻĄিāĻāϞাāϰ āϰাāĻে।
✅ āϰিāĻĒোāĻিāĻāϰি āĻāĻāĻāϏাāĻĨে āϞোāĻাāϞ āĻĄাāĻাāĻŦেāĻ (Room) āĻāĻŦং āύেāĻāĻā§াāϰ্āĻ (Retrofit) āĻĨেāĻে āĻĄাāĻা āĻāύāϤে āĻĒাāϰে।
đ āϰিāĻĒোāĻিāĻāϰি āĻāύ্āĻাāϰāĻĢেāϏ āĻী?
āϰিāĻĒোāĻিāĻāϰি āĻāύ্āĻাāϰāĻĢেāϏ (Repository Interface) āĻŽূāϞāϤ āĻāĻāĻি āĻāύ্āĻ্āϰাāĻ্āĻ (āĻুāĻ্āϤি) āĻŦা āĻাāĻāĻĄāϞাāĻāύ, āϝেāĻাāύে āĻĄাāĻা āĻĢেāĻ āĻŦা āĻŽ্āϝাāύিāĻĒুāϞেāĻļāύেāϰ āĻāύ্āϝ āĻিāĻু āĻŽেāĻĨāĻĄ āĻĄিāĻĢাāĻāύ āĻāϰা āĻšā§।
đ āĻāύ্āĻাāϰāĻĢেāϏে āĻļুāϧুāĻŽাāϤ্āϰ āĻŽেāĻĨāĻĄেāϰ āĻোāώāĻŖা (Declaration) āĻĨাāĻে, āĻিāύ্āϤু āϤাāĻĻেāϰ āĻāĻŽāĻĒ্āϞিāĻŽেāύ্āĻেāĻļāύ āĻĨাāĻে āύা।
đĄ āĻেāύ?
āĻাāϰāĻŖ, āĻāϰ āĻĢāϞে āĻāĻĒāύি āĻāĻāĻ āĻāύ্āĻাāϰāĻĢেāϏেāϰ āĻāύ্āϝ āĻāĻাāϧিāĻ āĻĄাāĻা āϏোāϰ্āϏ (āĻĄাāĻাāĻŦেāĻ, API, āϞোāĻাāϞ āĻĢাāĻāϞ) āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϤে āĻĒাāϰেāύ।
đ ️ āϰিāĻĒোāĻিāĻāϰি āĻāύ্āĻাāϰāĻĢেāϏ āϤৈāϰিāϰ āĻāĻĻাāĻšāϰāĻŖ
āϧāϰা āϝাāĻ, āĻāĻĒāύি User āϏāĻŽ্āĻĒāϰ্āĻিāϤ āĻĄাāĻা āĻš্āϝাāύ্āĻĄেāϞ āĻāϰāϤে āĻাāύ। āĻāĻāύ্āϝ, āĻĒ্āϰāĻĨāĻŽে Repository Interface āϤৈāϰি āĻāϰāϤে āĻšāĻŦে –
interface UserRepository {
fun getAllUsers(): LiveData<List<User>> // āϏāĻŽāϏ্āϤ āĻāĻāĻাāϰ āϞিāϏ্āĻ āύিā§ে āĻāϏāĻŦে
fun insertUser(user: User) // āύāϤুāύ āĻāĻāĻাāϰ āĻĄাāĻাāĻŦেāĻে āϝোāĻ āĻāϰāĻŦে
fun deleteUser(user: User) // āĻāĻāĻাāϰ āĻĄিāϞিāĻ āĻāϰāĻŦে
}
đš āĻāĻাāύে āϝা āĻāĻāϞ:
getAllUsers()→ āĻĄাāĻাāĻŦেāĻ/API āĻĨেāĻে āĻāĻāĻাāϰ āϞিāϏ্āĻ āύিā§ে āĻāϏāĻŦে।insertUser()→ āύāϤুāύ āĻāĻāĻাāϰ āϝুāĻ্āϤ āĻāϰāĻŦে।deleteUser()→ āĻāĻāĻাāϰ āĻĄিāϞিāĻ āĻāϰāĻŦে।
āĻিāύ্āϤু, āĻāĻাāύে āĻāĻŽāĻĒ্āϞিāĻŽেāύ্āĻেāĻļāύ āύেāĻ! đ¤
āĻāĻি āĻāĻŽāĻĒ্āϞিāĻŽেāύ্āĻ āĻāϰāϤে āĻšāĻŦে āĻāϞাāĻĻা āĻāĻāĻা āĻ্āϞাāϏে।
đĄ āϰিāĻĒোāĻিāĻāϰি āĻāύ্āĻাāϰāĻĢেāϏ āĻāĻŽāĻĒ্āϞিāĻŽেāύ্āĻ āĻāϰা (Room Database-āĻāϰ āĻāύ্āϝ)
āĻāĻāύ āĻāĻŽাāĻĻেāϰ UserRepositoryImpl āĻ্āϞাāϏে āĻāύ্āĻাāϰāĻĢেāϏেāϰ āĻŽেāĻĨāĻĄāĻুāϞো āĻāĻŽāĻĒ্āϞিāĻŽেāύ্āĻ āĻāϰāϤে āĻšāĻŦে।
class UserRepositoryImpl(private val userDao: UserDao) : UserRepository {
override fun getAllUsers(): LiveData<List<User>> {
return userDao.getAllUsers()
}
override fun insertUser(user: User) {
Thread {
userDao.insertUser(user)
}.start()
}
override fun deleteUser(user: User) {
Thread {
userDao.deleteUser(user)
}.start()
}
}
đ āĻŦ্āϝাāĻ্āϝা:
✔ UserDao → āĻāĻি Room Database-āĻāϰ DAO (Data Access Object), āϝা āĻĄাāĻাāĻŦেāĻেāϰ āϏাāĻĨে āĻাāĻ āĻāϰে।
✔ getAllUsers() → āĻāĻি āĻĄাāĻাāĻŦেāĻ āĻĨেāĻে āĻāĻāĻাāϰ āϞিāϏ্āĻ āύিā§ে āĻāϏে।
✔ insertUser() & deleteUser() → āĻāĻুāϞো āύāϤুāύ āĻāĻāĻাāϰ āϝোāĻ āĻŦা āĻĄিāϞিāĻ āĻāϰে। (āĻŦ্āϝাāĻāĻ্āϰাāĻāύ্āĻĄ āĻĨ্āϰেāĻĄ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰা āĻšā§েāĻে)।
đ āϰিāĻĒোāĻিāĻāϰি API-āϰ āĻāύ্āϝ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϞে āĻেāĻŽāύ āĻšāĻŦে?
āĻāĻĒāύি āĻāĻāĻ āĻāύ্āĻাāϰāĻĢেāϏ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰে Retrofit API āĻāϞ āĻāϰāϤে āĻĒাāϰেāύ!
class UserRepositoryImpl(private val apiService: ApiService) : UserRepository {
override fun getAllUsers(): LiveData<List<User>> {
val userData = MutableLiveData<List<User>>()
apiService.getUsers().enqueue(object : Callback<List<User>> {
override fun onResponse(call: Call<List<User>>, response: Response<List<User>>) {
if (response.isSuccessful) {
userData.postValue(response.body())
}
}
override fun onFailure(call: Call<List<User>>, t: Throwable) {
userData.postValue(null)
}
})
return userData
}
override fun insertUser(user: User) {
apiService.insertUser(user).enqueue(object : Callback<Void> {
override fun onResponse(call: Call<Void>, response: Response<Void>) {}
override fun onFailure(call: Call<Void>, t: Throwable) {}
})
}
override fun deleteUser(user: User) {
apiService.deleteUser(user.id).enqueue(object : Callback<Void> {
override fun onResponse(call: Call<Void>, response: Response<Void>) {}
override fun onFailure(call: Call<Void>, t: Throwable) {}
})
}
}
đ āĻāĻāĻ āĻāύ্āĻাāϰāĻĢেāϏ (UserRepository), āĻিāύ্āϤু āĻĄাāĻা āϏোāϰ্āϏ āĻāϞাāĻĻা!
- āĻāĻেāϰāĻা Room Database āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāĻিāϞ।
- āĻāĻা API āĻāϞ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāĻে।
đ¯ āĻāĻĒāϏংāĻšাāϰ (Final Thoughts)
✅ āϰিāĻĒোāĻিāĻāϰি āĻāύ্āĻাāϰāĻĢেāϏ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϞে āĻāĻĒāύাāϰ āĻ
্āϝাāĻĒ āĻāϰāĻ āĻĢ্āϞেāĻ্āϏিāĻŦāϞ āĻšā§।
✅ āĻāĻāĻ āĻāύ্āĻাāϰāĻĢেāϏ āĻĻিā§ে āĻāĻĒāύি API, Room DB, SharedPreferences - āϏāĻŦ āĻিāĻু āĻš্āϝাāύ্āĻĄেāϞ āĻāϰāϤে āĻĒাāϰেāύ।
✅ MVVM āĻāϰ্āĻিāĻেāĻāĻাāϰে āϰিāĻĒোāĻিāĻāϰি āĻুāϰুāϤ্āĻŦāĻĒূāϰ্āĻŖ āĻāĻāĻি āĻāĻŽ্āĻĒোāύেāύ্āĻ।
✅ āĻāĻāύিāĻ āĻেāϏ্āĻিং āϏāĻšāĻ āĻšā§ে āϝাā§, āĻাāϰāĻŖ āĻāĻĒāύি Mock Repository āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāϤে āĻĒাāϰেāύ।
đĨ āϤাāĻšāϞে, āĻāĻĒāύি āϝāĻĻি MVVM āĻāϰ্āĻিāĻেāĻāĻাāϰ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰেāύ, āϤাāĻšāϞে āϰিāĻĒোāĻিāĻāϰি āĻāύ্āĻাāϰāĻĢেāϏ āϤৈāϰি āĻāϰাāĻ āϏāĻŦāĻেā§ে āĻাāϞো āĻĒ্āϰ্āϝাāĻāĻিāϏ! đ
Comments
Post a Comment