SOLID Design Principles In Kotlin