An example of a bridge pattern in Kotlin.
Table of contents for design patterns in Kotlin
The bridge pattern is a design pattern used in software engineering that is meant to “decouple an abstraction from its implementation so that the two can vary independently”, introduced by the Gang of Four. The bridge uses encapsulation, aggregation, and can use inheritance to separate responsibilities into different classes. Wikipedia
Example:
Rocket
interface Rocket {
fun fire()
}
SuperRocket
class SuperRocket: Rocket {
override fun fire() = println("Super rocket fire!")
}
TurboRocket
class TurboRocket: Rocket {
override fun fire() = println("Turbo rocket fire!")
}
RocketLauncher
interface RocketLauncher {
val rocket: Rocket
fun fire()
}
RocketSite
class RocketSite(override val rocket: Rocket) : RocketLauncher {
override fun fire() = rocket.fire()
}
Usage
fun main() {
val superRocker = SuperRocket()
val turboRocket = TurboRocket()
RocketSite(superRocker).fire()
RocketSite(turboRocket).fire()
}
Result
Super rocket fire!
Turbo rocket fire!