设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

代理模式:女朋友这么漂亮,你缺经纪人吗?

2016-8-23 23:22| 发布者: joejoe0332| 查看: 1251| 评论: 0|原作者: 张拭心 |来自: oschina

摘要: 这几天王宝强妻子出轨经纪人事件惹尽了眼球,“你缺经纪人吗” 一下子成为打招呼必备热词。在紧跟“潮流”之前我们有必要了解下,经纪人都负责为宝强做哪些事呢? ...

你缺经纪人吗

这几天王宝强妻子出轨经纪人事件惹尽了眼球,“你缺经纪人吗” 一下子成为打招呼必备热词。在紧跟“潮流”之前我们有必要了解下,经纪人都负责为宝强做哪些事呢?

  • 为宝强安排档期
  • 为宝强做公关
  • 为宝强照顾家庭

可以看到,除了吃喝拉撒睡,宝强的许多行为都被经纪人 架空 了:

20160823215609

(对话纯属虚构)

可以看出,经纪人会将外界给宝强的信息进行拦截、处理,这就是我们常说的代理模式

代理模式

定义

为其他对象提供一种代理以控制对这个对象的访问。
(Provide asurrogate or placeholder for another object to control access to it. )

经典的UML图

这里写图片描述

在图中,代理与被代理实现同一个接口,即拥有共同的行为,同时代理中持有一个被代理的引用。这样当不想直接访问某个对象时,可以通过代理来间接访问。

以宝强和经纪人举个栗子

1.经纪人和明星在一些行为上有共同点,所以定义一个共有接口:

 

 

2.接着是明星类,实现了明星接口的行为:

 

 

3.经纪人要代表明星,就需要和明星有同样的行为,同时持有明星的引用:

 

 

4.调用方如何通过经纪人访问明星呢:

 

 

5.运行结果

这里写图片描述

6.可以看到 代理 的主要作用是 方法增强,它可以在不“惊动”被代理类的情况下修改被代理类的行为。这有助于系统解耦。我们这里代理类和被代理类都是自己亲自敲好的,属于静态代理

总结

某个类能满足要求时,你当然可以直接用它,但当它不能满足要求,要扩展功能,根据 开闭原则 你又不能修改实现类代码,这时就用到了 代理 。

代理模式共分为 2 种:

  • 静态代理
  • 动态代理

静态代理需要我们编码时就确定代理、被代理对象关系,如果有大量的或者运行时才确定的代理行为,静态代理就不太合适了;

而在实际应用中 动态代理 更为常用,它可以使用反射,通过参数和代理方法自动生成代理的代码。

动态代理的具体内容且听下回分解!


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部