设计模式

设计模式-桥接模式

2020-06-02  本文已影响0人  isLJli

桥接设计模式的定义

将抽象部分与实现部分分离,使他们都可以独立的进行变化

这个设计模式有点像模板设计模式和代理设计模式的结合。

桥接模式例子-点咖啡

咖啡味道:原味、加糖

//给咖啡加料
interface CoffeeAdditives {

}

class original : CoffeeAdditives {

  override fun toString(): String {
      return "原味"
  }
}

class Sugar:CoffeeAdditives {

  override fun toString(): String {
      return "加糖"
  }
}

咖啡的份量

//咖啡 大杯、小杯 加料
open class Coffee() {

  //味道
  open var additives:CoffeeAdditives? = null

  fun addCoffeeAdditives(additives: CoffeeAdditives){
      this.additives = additives
  }

  //制作份量
  open fun makeCoffee(){

  }

}

class LargeCoffee : Coffee(){

  override fun makeCoffee() {
      println("大杯的"+additives+"咖啡")
  }
}


class MinddleCoffee :Coffee(){
  override fun makeCoffee() {
      println("中杯的"+additives+"咖啡")
  }
}

class SmallCoffee : Coffee(){
  override fun makeCoffee() {
      println("小杯的"+additives+"咖啡")
  }
}

调试

fun main(args:Array<String>){

      //小杯加糖
      val sugar=Sugar()
      val small : SmallCoffee = SmallCoffee()
      small.addCoffeeAdditives(sugar)
      small.makeCoffee()

      //大杯原味
      val original= original()
      val large = LargeCoffee()
      large.addCoffeeAdditives(original)
      large.makeCoffee()

      //中杯原味
      val original1= original()
      val middle = MinddleCoffee()
      middle.addCoffeeAdditives(original1)
      middle.makeCoffee()

  }

打印结果:
小杯的加糖咖啡
大杯的原味咖啡
中杯的原味咖啡

上一篇 下一篇

猜你喜欢

热点阅读