桥接设计模式的定义
将抽象部分与实现部分分离,使他们都可以独立的进行变化
这个设计模式有点像模板设计模式和代理设计模式的结合。
桥接模式例子-点咖啡
咖啡味道:原味、加糖
//给咖啡加料
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()
}
打印结果:
小杯的加糖咖啡
大杯的原味咖啡
中杯的原味咖啡
网友评论