简介
-
简单来说,该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。这个模式中,设计到3个角色。
-
门面角色:外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合。
-
子系统角色:实现了子系统的功能。它对客户角色和Facade时未知的。它内部可以有系统内的相互交互,也可以由供外界调用的接口。
-
客户角色:通过调用Facede来完成要实现的功能。
-
-
为复杂的模块或子系统提供外界访问的模块;
-
子系统相互独立;
-
在层析结构中,可以使用外观模式定义系统的每一层的入口。
实现
-
类图如下:
-
代码如下:
/**
*门面类
*/
class Facade {
val model1 = Model1()
val model2 = Model2()
val model3 = Model3()
fun start() {
model1.startM1()
model2.startM2()
model3.startM3()
}
fun stop() {
model1.stopM1()
model2.stopM2()
model3.stopM3()
}
}
/**
* 系统类,其他2个与之相同,就不展示了
*/
class Model1 {
fun startM1(){
println("startM1")
}
fun stopM1(){
println("stopM1")
}
}
/**
*客户端
*/
fun main(args: Array<String>) {
val facade = Facade()
facade.start()
facade.stop()
}