11_门面模式(外观模式)

一、子系统

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()
}

猜你喜欢

转载自blog.csdn.net/Duckdan/article/details/110419973