定义:外观模式是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式,该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体细节,这样会大大降低应用程序的复杂程度,提高了程序的可维护性。
外观模式是“迪米特法则”的典型应用
例子:外观模式在现实生活中有很多例子,就例如最近很火的小米智能家电一样,我们作为客户,小米只能语音作为一个子系统类的一个入口,我们想做什么只需要和小米只能语音说就行了
class Light{
fun on(){
println("打开了灯....")
}
fun off(){
println("关闭了灯")
}
}
class TV{
fun on(){
println("打开了电视...")
}
fun off(){
println("关闭了电视...")
}
}
class AirCondition{
fun on(){
println("打开了空调...")
}
fun off(){
println("关闭了空调...")
}
}
class SmartAppliancesFacade{
private val light: Light = Light()
private val tv: TV = TV()
private val airCondition: AirCondition = AirCondition()
fun say(message: String){
if (message.contains("打开"))
on()
else if (message.contains("关闭"))
off()
else
println("听不懂")
}
private fun on(){
println("起床了")
light.on()
tv.on()
airCondition.on()
}
private fun off(){
println("睡觉了")
light.off()
tv.off()
airCondition.off()
}
}
fun main(){
val facade = SmartAppliancesFacade()
facade.say("打开家电")
}