Bridge Pattern

The bridge pattern allows the Abstraction and the Implementation to be developed independently and the client code can access only the Abstraction part without being concerned about the Implementation part.

package structural
interface Switch {
    var appliance: Appliance
    fun turnOn()
interface Appliance {
    fun run()
class RemoteControl(override var appliance: Appliance) : Switch {
    override fun turnOn() =
class TV : Appliance {
    override fun run() = println("TV turned on")
class VacuumCleaner : Appliance {
    override fun run() = println("VacuumCleaner turned on")
fun main(args: Array<String>) {
    var tvRemoteControl = RemoteControl(appliance = TV())
    var fancyVacuumCleanerRemoteControl = RemoteControl(appliance = VacuumCleaner())

Comment / Suggestion Section
Point our Mistakes and Post Your Suggestions

Recent Addition

new tutorial Selenium Online Training : Our next online training course for Selenium with Java starts from 17th December 2018.

You can attend first 3 classes for free, the total course fee is INR 10,000

The course time would be 8.00 PM(IST) for the first three classes

If you are interested to learn, then you can join the course by sending email to

or Register below

Join My Facebook Group
Join Group