Reader small image

You're reading from  Kotlin Design Patterns and Best Practices - Third Edition

Product typeBook
Published inApr 2024
PublisherPackt
ISBN-139781805127765
Edition3rd Edition
Right arrow
Author (1)
Alexey Soshin
Alexey Soshin
author image
Alexey Soshin

Alexey Soshin is a software architect with 18 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design
Read more about Alexey Soshin

Right arrow

Prototype

The Prototype design pattern focuses on customization and the creation of objects that are similar but have slight variations. To gain a better understanding, let’s examine an example.

Consider a system that handles user management and permissions. We can represent a user using a data class, which might be structured as follows:

data class User(
    val name: String,
    val role: Role,
    val permissions: Set<String>,
) {
    fun hasPermission(permission: String) = permission in permissions
}

Each user must have a role, and each role has a set of permissions.

We’ll describe a role as an enum class:

enum class Role {
    ADMIN,
    SUPER_ADMIN,
    REGULAR_USER
}

Enum classes offer a convenient method for representing a collection of constants. This approach is advantageous compared to using strings to represent roles, as it allows for compile-time checks ensuring the existence of such objects. Additionally, using an enum allows...

lock icon
The rest of the page is locked
Previous PageNext Page
You have been reading a chapter from
Kotlin Design Patterns and Best Practices - Third Edition
Published in: Apr 2024Publisher: PacktISBN-13: 9781805127765

Author (1)

author image
Alexey Soshin

Alexey Soshin is a software architect with 18 years of experience in the industry. He started exploring Kotlin when Kotlin was still in beta, and since then has been a big enthusiast of the language. He's a conference speaker, published writer, and the author of a video course titled Pragmatic System Design
Read more about Alexey Soshin