美文网首页
设计模式 -- 代理模式

设计模式 -- 代理模式

作者: 皆为序幕_ | 来源:发表于2019-08-16 16:50 被阅读0次

表述 (结构型模式)

为其他对象(A)提供一种代理对象(B),并由改代理对象(B)控制对该对象(A)的访问

在代理模式中引入了一个新的代理对象,代理对象在客户端对象和目标对象之间起到中介的作用,它去掉客户不能看到的内容和服务或者增添客户需要的额外的新服务

代理模式类图

代理模式类图
  • Subject(协议):定义代理和委托的共同方法

  • RealSubject(真实角色):根据指定的协议,委托代理去完成实现指定方法

  • Proxy(代理角色):根据指定的协议,实现委托需要实现的方法

优点

  • 具有良好的扩展性。委托的业务逻辑可能会随时改变,当有新增功能,只需要在协议中增加方法就能不影响原有功能的情况下增加新功能
  • 有利于代码的封装。如果一个类,实现了某个协议,那么这个协议中的属性或方法就不必公有化,就可以被定义协议的类调用。这样可以减少一个类暴露给外部的方法
  • 有利于程序的结构化与层次化。一个协议往往是解决某一个问题,对于一个其他的不过却类似的问题,我们只用再次实现协议即可,避免了自己再次构思一组方法,提高代码的复用性

示例

需求V1 :不想做饭,想用APP点个外卖

协议类

protocol DoSomethingDelegate {
    func buySomething()
}

委托类

class Person  {
    weak var delegate : APP?
    
    func buy() {
        if self.delegate != nil && ((self.delegate?.buySomething) != nil) {
            self.delegate?.buySomething()
        }
    }
}

代理类

class APP :DoSomethingDelegate{
   
    func buySomething() {
        print("外卖")
    }
}

客户端调用

let per = Person.init()
let app = APP.init()
per.delegate = app
per.buy()

log:
//外卖

相关文章

  • Mybatis代理设计模式(Proxy)与编程实现原理

    最易懂设计模式解析适配器设计模式模板方法设计模式Mybatis多级代理 1. 认识代理模式 1.1 模式定义 给某...

  • 模板方法设计模式(Template Method)

    最易懂设计模式解析适配器设计模式Mybatis代理设计模式Mybatis多级代理 1. 认识模板方法模式 1.1 ...

  • 适配器设计模式(Adapter)

    最易懂设计模式解析模板方法设计模式Mybatis代理设计模式Mybatis多级代理 1. 认识适配器模式 1.1 ...

  • 理解java的代理模式和动态代理

    代理模式 代理模式是23种设计模式之一,属于结构型模式。代理模式是最常见也是最常用的模式之一,只不过有很多设计模式...

  • spring框架中的设计模式二

    在这篇文章中,介绍4种设计模式。结构型设计模式:代理和复合模式。行为型设计模式:策略和模板方法模式。 代理模式 面...

  • 10、结构型模式-代理设计模式

    1、加盟商来啦-你需要掌握的代理设计模式 简介:讲解代理设计模式,让代理帮你完成工作 代理设计模式(Proxy P...

  • 设计模式之代理模式

    设计模式之代理模式 10分钟看懂动态代理设计模式(升级篇)-对这篇动态代理模式的思路整理 仿JDK实现动态代理逻辑...

  • 动态代理原理解析

    注:源自于Android 一、代理模式 代理模式是java23种设计模式常用的一种设计模式。代理模式是客户端不直接...

  • 设计模式

    常用的设计模式有,单例设计模式、观察者设计模式、工厂设计模式、装饰设计模式、代理设计模式,模板设计模式等等。 单例...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

网友评论

      本文标题:设计模式 -- 代理模式

      本文链接:https://www.haomeiwen.com/subject/qvxslctx.html