🧠 Mapper Class – āĻŦ্āϰেāχāύ-āĻĢ্āϰেāύ্āĻĄāϞি āĻŦ্āϝাāĻ–্āϝা (Kotlin)

 

🧠 Mapper Class – āĻŦ্āϰেāχāύ-āĻĢ্āϰেāύ্āĻĄāϞি āĻŦ্āϝাāĻ–্āϝা (Kotlin)

āϤুāĻŽি āϝāĻĻি āĻ•āĻ–āύāĻ“ āĻāĻŽāύ āϏিāϚুāϝ়েāĻļāύ āĻĻেāĻ–ো āϝেāĻ–াāύে āĻāĻ•āϟা āĻĄাāϟা āĻ•্āϞাāϏেāϰ āĻĄাāϟা āĻ…āύ্āϝ āĻāĻ•āϟা āĻĄাāϟা āĻ•্āϞাāϏে āϟ্āϰাāύ্āϏāĻĢাāϰ āĻ•āϰāϤে āĻšāϝ়, āϤāĻ–āύ Mapper āĻ•্āϞাāϏ āĻ•াāϜে āϞাāĻ—ে। 🤔


đŸŽ¯ Mapper Class āĻ•ী?

Mapper āĻšāϞ āĻāĻ•āϟা āĻ•āύāĻ­াāϰ্āϟাāϰ, āϝা āĻāĻ•āϟা āĻĄাāϟা āϟাāχāĻĒāĻ•ে āφāϰেāĻ•āϟা āĻĄাāϟা āϟাāχāĻĒে āϰূāĻĒাāύ্āϤāϰ āĻ•āϰে

🔹 āϝāĻ–āύ āĻĻāϰāĻ•াāϰ?

  • API āĻĨেāĻ•ে āφāϏা āĻĄাāϟা (DTO) UI āĻŽāĻĄেāϞে āĻ•āύāĻ­াāϰ্āϟ āĻ•āϰāϤে
  • Database Entity → UI Model
  • UI Model → API Request
  • āĻāĻ• āϧāϰāĻŖেāϰ āĻ…āĻŦāϜেāĻ•্āϟāĻ•ে āφāϰেāĻ• āϧāϰāĻŖেāϰ āĻ…āĻŦāϜেāĻ•্āϟ āĻŦাāύাāϤে

āĻāĻ•āϟা āĻŦাāϏ্āϤāĻŦ āωāĻĻাāĻšāϰāĻŖ

āϧāϰো, āϤোāĻŽাāϰ āĻ…্āϝাāĻĒে āχāωāϜাāϰেāϰ āϤāĻĨ্āϝ API āĻĨেāĻ•ে āφāϏāĻ›ে āĻāχ āĻĢāϰāĻŽ্āϝাāϟে:

data class UserDto(
    val id: Int,
    val fullName: String,
    val email: String
)

📌 āĻ•িāύ্āϤু āϤোāĻŽাāϰ UI-āϤে āĻāχ āĻĢāϰāĻŽ্āϝাāϟ āĻĻāϰāĻ•াāϰ:

data class User(
    val userId: Int,
    val name: String,
    val email: String
)

🚀 Mapper Class āϤৈāϰি āĻ•āϰা

āĻāĻ–āύ āĻāĻ•āϟা Mapper āĻ•্āϞাāϏ āĻŦাāύাāĻŦো āϝা UserDto āĻĨেāĻ•ে User āĻŦাāύাāĻŦে!

class UserMapper {
    fun map(dto: UserDto): User {
        return User(
            userId = dto.id,
            name = dto.fullName,
            email = dto.email
        )
    }
}

āĻāĻ–াāύে map() āĻŽেāĻĨāĻĄāϟা āĻāĻ•āϟা UserDto āχāύāĻĒুāϟ āύিāϝ়ে User āφāωāϟāĻĒুāϟ āĻĻিāϚ্āĻ›ে! 🚀


🏆 Extension Function āĻĻি⧟ে āφāϰāĻ“ āϏ্āĻŽাāϰ্āϟ āĻŽ্āϝাāĻĒিং

āĻāĻ–āύ UserMapper āĻ•্āϞাāϏ āύা āϰেāĻ–ে āĻāĻ•āϟা Extension Function āĻĻি⧟ে āϏāĻšāϜ āĻ•āϰা āϝা⧟।

fun UserDto.toUser(): User {
    return User(
        userId = this.id,
        name = this.fullName,
        email = this.email
    )
}

āĻāĻ–āύ āϏāĻšāϜেāχ UserDto āĻĨেāĻ•ে User āĻŦাāύাāύো āϝাāĻŦে:

val userDto = UserDto(1, "John Doe", "john@example.com")
val user = userDto.toUser()

println(user) // Output: User(userId=1, name=John Doe, email=john@example.com)

đŸ”Ĩ āφāϰāĻ“ āϏāĻšāϜ āĻ“ āĻ•্āϞিāύ āĻ•োāĻĄ!


🎭 List Mapping (Multiple Items)

āĻāĻ•āϟা List<UserDto> āĻ•ে List<User> āĻŦাāύাāϤে āϚাāχāϞে āϏāĻšāϜ āωāĻĒা⧟:

fun List<UserDto>.toUserList(): List<User> {
    return this.map { it.toUser() }
}

āĻāĻ–āύ āϞিāϏ্āϟেāϰ āϏāĻŦ UserDto āĻ•ে āĻāĻ• āĻ•্āϞিāĻ•ে User āĻŦাāύাāύো āϝাāĻŦে!

val userList = listOf(
    UserDto(1, "John Doe", "john@example.com"),
    UserDto(2, "Jane Smith", "jane@example.com")
)

val mappedUsers = userList.toUserList()

println(mappedUsers)

💡 āφāϰāĻ“ āĻ…্āϝাāĻĄāĻ­াāύ্āϏāĻĄ Mapper

āϝāĻĻি āĻŦাāχ-āĻĄাāχāϰেāĻ•āĻļāύাāϞ (āωāĻ­āϝ় āĻĻিāĻ• āĻĨেāĻ•ে) āĻŽ্āϝাāĻĒিং āĻĻāϰāĻ•াāϰ āĻšā§Ÿ, āϤাāĻšāϞে Mapper āχāύ্āϟাāϰāĻĢেāϏ āĻŦাāύাāύো āϝেāϤে āĻĒাāϰে:

interface Mapper<I, O> {
    fun map(input: I): O
    fun reverseMap(output: O): I
}

āĻāĻ–āύ UserMapper āχāĻŽāĻĒ্āϞিāĻŽেāύ্āϟ āĻ•āϰāϞে āĻĻুāχāĻĻিāĻ•েāϰ āĻŽ্āϝাāĻĒিং āϏāĻšāϜ āĻšāĻŦে:

class UserMapper : Mapper<UserDto, User> {
    override fun map(input: UserDto): User {
        return User(
            userId = input.id,
            name = input.fullName,
            email = input.email
        )
    }

    override fun reverseMap(output: User): UserDto {
        return UserDto(
            id = output.userId,
            fullName = output.name,
            email = output.email
        )
    }
}

āĻāĻ–āύ āĻĻুāχ āĻĻিāĻ•েāϰ āĻŽ্āϝাāĻĒিং āĻ•āϰা āϝাāĻŦে:

val userMapper = UserMapper()

val userDto = UserDto(3, "Alice", "alice@example.com")
val user = userMapper.map(userDto)
val backToDto = userMapper.reverseMap(user)

println(user)       // User(userId=3, name=Alice, email=alice@example.com)
println(backToDto)  // UserDto(id=3, fullName=Alice, email=alice@example.com)

đŸŽ¯ Mapper Class āĻ•েāύ āĻĻāϰāĻ•াāϰ?

Separation of Concerns: Model āϟ্āϰাāύ্āϏāĻĢāϰ্āĻŽেāϰ āĻ•াāϜ āφāϞাāĻĻা āĻšā§Ÿে āϝা⧟
Code Reusability: āĻāĻ•āĻŦাāϰ āϞিāĻ–āϞে āĻŦাāϰāĻŦাāϰ āĻŦ্āϝāĻŦāĻšাāϰ āĻ•āϰা āϝা⧟
Clean Architecture: Data Layer, Domain Layer, UI Layer āφāϞাāĻĻা āϰাāĻ–āϤে āϏাāĻšাāϝ্āϝ āĻ•āϰে


đŸ”Ĩ Mapper āύি⧟ে āφāϰāĻ“ āĻ•িāĻ›ু āφāχāĻĄি⧟া

  • Room Database EntityDomain Model
  • API ResponseUI Model
  • Multiple Data Source āĻŽিāĻ•্āϏিং āĻ•āϰāϤে

đŸ”Ĩ āĻāĻ–āύ āĻŦāϞো, āϤোāĻŽাāϰ āĻ…্āϝাāĻĒে āĻ•োāĻĨা⧟ Mapper āĻĻāϰāĻ•াāϰ? 😎

🧠 Mapper Class-Brain-Friendly Explanation (Kotlin)

Comments

Popular posts from this blog

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

🧠 Regex āĻ•ী?

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