🔍 āϰিāĻĒোāϜিāϟāϰি āχāύ্āϟাāϰāĻĢেāϏ (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 āφāϰ্āĻ•িāϟেāĻ•āϚাāϰ āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰেāύ, āϤাāĻšāϞে āϰিāĻĒোāϜিāϟāϰি āχāύ্āϟাāϰāĻĢেāϏ āϤৈāϰি āĻ•āϰাāχ āϏāĻŦāϚে⧟ে āĻ­াāϞো āĻĒ্āϰ্āϝাāĻ•āϟিāϏ! 🚀

🔍 Repository Interface - In simple language explanation

Comments

Popular posts from this blog

AI (Artificial Intelligence) āϏāĻšāϜāĻ­াāĻŦে āĻŦোāĻাāϰ āϜāύ্āϝ āĻāĻ•āĻĻāĻŽ āĻŽāϏ্āϤিāώ্āĻ•-āĻŦাāύ্āϧāĻŦ āĻŦ্āϝাāĻ–্āϝা 🧠🤖

🧠 Regex āĻ•ী?

Kotlin-āĻ āĻ­েāϰিāϝ়েāĻŦāϞ āϘোāώāĻŖা āĻ•āϰাāϰ āĻĻুāχ āωāĻĒাāϝ়