收藏设计模式

Android设计模式:代理模式

2021-11-08  本文已影响0人  搬码人

简介

代理模式:给目标对象提供一个代理对象,并由代理对象控制对目标对象访问。

代码实例

背景:水果店与第三方合作,开展了海外水果代购服务

设计背景
设计
package 设计模式6

/**
 *@Description
 *@Author PC
 *@QQ 1578684787
 */

/**
 * 订单接口
 */

interface OrderService{
    fun saveOrder():Int
}

/**
 * 本地订单
 */
class OrderServiceImpl:OrderService{
    override fun saveOrder(): Int {
        println("下单成功 订单号:8888")
        return 8888
    }
}
/**
 * 海外订单
 */
class OutOrderServiceImpl:OrderService{
    override fun saveOrder(): Int {
        println("下单成功 订单号:6666")
        return 6666
    }

}
class ProxyOrder:OrderService{
    //真实的订单服务
    private val orderService = OutOrderServiceImpl()
    override fun saveOrder(): Int {
        println("开始海外下订单")
        return orderService.saveOrder()
    }

}
/**
 * 代理模式
 * 代理进口水果
 */
fun main() {
    val orderService = ProxyOrder().also { 
        it.saveOrder()
    }
}

测试结果


测试结果

当然,上方只是简单的说明场景,实战过程中还会遇到更复杂的场景(如动态调用等),只需要简单的转换应用就可以了。

优点

缺点

应用场景

当一个对象不能或者不想直接访问另一个对象时,可以通过一个代理对象来简介范根。为保证客户端使用的透明性,委托对象和代理对象要实现同样的接口。
北方恩的对象不想暴露全部内容时,可以通过代理去掉不想被访问的内容。
根据适用范围,代理模式可以分为以下几种:

上一篇 下一篇

猜你喜欢

热点阅读