一、子系统
package com.study.facade_pattern
/**
* 登录功能
*/
class LoginFunction {
fun function() {
println("登录功能")
}
}
package com.study.facade_pattern
/**
* 市场功能
*/
class MarketFunction {
fun function() {
println("市场功能")
}
}
package com.study.facade_pattern
/**
* 支付功能
*/
class PayFunction {
fun function() {
println("支付功能")
}
}
二、门面类
package com.study.facade_pattern
/**
* 天猫App
*/
class TianMaoApp {
fun function() {
//先登录
var login = LoginFunction()
login.function()
//逛市场选商品
var market = MarketFunction()
market.function()
//选完商品之后进行支付
var pay = PayFunction()
pay.function()
}
}
三、主程序调用
package com.study.facade_pattern
/**
* 定义:
又叫门面模式,提供了一个统一的接口,用来访问子系统中的一群接口
外观模式定义了一个高层接口,让子系统更容易使用
类型:结构性
适用场景:
子系统越来越复杂,增加外观模式提供简单接口调用
构建多层系统结构,利用外观对象作为每层的入口,简化层间调用
优点
简化了调用过程,无需深入了解子系统,防止带来风险。
减少系统依赖,松散耦合
更好的划分访问层次
符合迪米特原则,即最少知道原则
缺点
增加子系统,扩展子系统行为容易引入风险
不符合开闭原则
*/
fun main() {
//想要买东西,只用下载一个天猫App。天猫App给用户提供了一个操作入口
//用户不用关心登录、逛市场、支付之间的具体联系
var tianMaoApp = TianMaoApp()
tianMaoApp.function()
}