代理模式

原始定义:Proxy pattern provides a surrogate or placeholder for another object in order to controll access to it
宁看懂了吗?
翻译:代理模式就是给某一个对象(被代理对象proxyee)提供一个“替身”或者“占位符”来达到控制这个对象的目的。
我注:也就是说,相比于之前我们直接操作这个对象(proxyee),我们通过操作代理对象(proxyer)来间接的操作proxyee。 这下懂了吧亲?

静态代理

从字面理解,就是有另一个人代替了你去做了本来你应该做的事情(在代码中其实还是你自己做的,这里先不管具体谁做的)。
静态代理模式的优点

  • 在不改变原有代码的前提下增加功能
  • 帮助你理解AOP
    静态代理模式的缺点
  • 代理类必须实现被代理类实现的接口,一旦被代理类的功能增加,会牵扯到代理类的代码。

这里用一个例子来解释静态代理的流程和代码。
我们假设你是蔡徐坤的经纪人,蔡徐坤自己跳舞是赚不到钱的,只有你接到业务让他跳舞他才有收入。
首先我们先创建一个功能接口叫做(如果对这里为什么要使用interface而不是class有疑问,这里是java编程的惯例,一般来讲,功能使用接口,实体使用类)


public interface talent{void dance();void sing();
}

然后我们创建出蔡徐坤,并且实现了他的天赋(talent 接口)


public class CaiXuKun implements talent{@overridepublic void dance(){system.out.println("我是来自美国校队的拉拉队队长,跳麻溜的");}@override public void sing(){system.out.println("鸡你太美");}}

然后我们让蔡徐坤自己表演下才艺(单独运行下他的方法)

public class TestCaixukun {public static void main(String[] args) {CaiXuKun caiXuKun = new CaiXuKun();caiXuKun.sing();caiXuKun.dance();}


然后发现他没有收到钱!!!!!

现在的重点来了,我们要使用经纪人来代理业务了,创建一个代理对象就叫做ProxyManager吧

public class ProxyManager implements talent{CaiXuKun target; //这里我们需要一个CaiXuKun的实例来保证还是caixukun本人在跳舞!!!!public void setTarget(CaiXuKun target) { this.target = target;}@Overridepublic void dance() {System.out.println("跳舞收费五十块 ,请交钱!");//这里就是我们添加的功能了!!!并且我们没有动CaiXuKun的代码!target.dance();}@Overridepublic void sing() {System.out.println("蔡徐坤唱歌收费五十块,请交钱!!!");//这里就是我们添加的功能了!!!并且我们没有动CaiXuKun的代码!target.sing();}
}在这里使用代理类运行一下
public class TestCaixukun {public static void main(String[] args) {ProxyManager proxyManager = new ProxyManager();CaiXuKun caiXuKun = new CaiXuKun();proxyManager.setTarget(caiXuKun);proxyManager.dance();proxyManager.sing();}
}

我们就成功了增加了功能了!!!! 你看懂了吗!!!
现在你回头看上面 代理模式的优点,映象应该会深刻和具体一点

动态代理 ()

Java代理模式之蔡徐坤老师加深你的理解相关推荐

  1. Java 写一段蔡徐坤跳舞的代码

    public class CaiXuKunDance { public static void main(String[] args) { System.out.println("蔡徐坤开始 ...

  2. 用数据分析蔡徐坤1亿转发量幕后推手被封后能否动摇饭圈文化?

    好名声比坏名声强,不过,坏名声比没名声强. --特朗普 上周,利用粉丝给偶像刷流量的需求来疯狂牟利的"星援"app被查封,事件曝光后,国内粉丝的追星方式再次掀起热议. 遥望偶像的时 ...

  3. cvtcolor python opencv_蔡徐坤教你用OpenCV实现素描效果

    众所周知,最近大热的蔡徐坤蔡老师是一位非常全能的老师,喜欢唱.跳.Rap.篮球,但其实他还会用OpenCV!今天就让我们跟着蔡老师一起用OpenCV实现素描效果吧! OpenCV素描效果https:/ ...

  4. HTML5 蔡徐坤打篮球游戏 NMSL❤️❤️❤️

    此文章来自实验楼用户dancebyte在实验楼的技术分享,希望大家喜欢~ 使用 es6 语法及原生 javascript 实现的蔡徐坤打篮球游戏.游戏有多种难度可选择(简单.普通.困难.极限以及非人类 ...

  5. 蔡徐坤团队获得”微博年度最佳团体“!vivo X23幻彩版却实力抢眼

    如今似乎每一款旗舰手机都会有一个代言人,毕竟代言人的巨大流量能够为对应的旗舰手机带来很多热点.而说到手机的代言人,我想蔡徐坤或许大家都知道吧,作为vivo x23的代言人,蔡徐坤着实为这款手机带来了极 ...

  6. 厉害了!用12万行代码堆出来个蔡徐坤,编译还能通过!

    点击"开发者技术前线",选择"星标????" 在看|星标|留言,  真爱 作者丨鱼羊 白交 来源丨量子位(ID:QbitAI) 有个程序猿,用12万行代码堆出来 ...

  7. 有点厉害!用12万行代码堆出来个蔡徐坤,编译还能通过!

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 2.8 分钟. 作者:鱼羊 白交 来自:量子位(ID:QbitAI) 有个程序猿,用12万行代码堆出来个「蔡徐坤」,编译还能通 ...

  8. 有点厉害!用12万行代码堆出来个蔡徐坤,关键是能跑能跳!

    热文推荐: 尘埃落定!清华才子王垠加入华为职级22,前阿里P10赵海平加入字节跳动,职级或为4+ 百度网盘"破解版",Pandownload开发者被抓 作者:鱼羊 白交 来自:量子 ...

  9. html蔡徐坤邀请你打篮球源码,蔡徐坤给IKUN“讲笑话”,想邀请粉丝打篮球,网友:你打球像...

    说到最近非常"火"的一位流量顶级明星,蔡徐坤绝对算得上是非常具有争议性的一个明星了,而因为前段时间潘长江老师不认识蔡徐坤的事件,使得蔡徐坤的粉丝跟网友们''互撕''了起来,之后这件 ...

最新文章

  1. Kubecon 2017大会Google高级产品经理David Aronchick访谈:机器学习和Kubernetes
  2. RUNOOB python练习题 32 列表的中括号符号小tips
  3. mongdb group聚合操作
  4. 阿里重启维护Dubbo了
  5. 计蒜客挑战难题:最后一个单词的长度
  6. 走迷宫问题 算法竞赛入门经典
  7. java一行代码实现集合写入Excel表格生成数据
  8. 互联网日报 | 微信红包封面向个人开放;每日优鲜获青岛战略投资20亿元;中国银联发布“银联云”...
  9. java文件上传与下载
  10. 超声波模块工作原理分析及程序
  11. 同旭堂同湿散真实效果,七大真实效果让你彻底放心
  12. indesign怎么拼图_自己动手制作个性相册
  13. redis的持久化方式RDB和AOF的区别
  14. TAD2141 角度传感器使用SPI:数据手册略读
  15. 本地测试如何让token在有效内过期方法
  16. 计算机软件系统的功能,软件系统由什么组成
  17. [UVM]UVM Component之Subscriber
  18. 分享内容至第三方应用(QQ,微信好友,朋友圈)
  19. 《投名状》,真正的赢家到底是谁?
  20. linux7.3启动iscsi服务,Centos7挂载iscsi磁盘

热门文章

  1. 一个酷炫的DNA动态特效背景动画网站
  2. 家用循环扇CE认证测试标准
  3. 2人同步听歌软件_【Android】魔音II 1.3 无损音乐下载软件震撼来袭,原音乐狂作者全新开发的一款安卓应用,低调使用!...
  4. Android动态背景设计,gif动画背景(模仿墨迹天气动态背景)
  5. spark报错:value xxx is not a member of Any
  6. 在线生成ascii字符画,字符图案生成在线工具,springboot banner启动字符图设置
  7. 迪文液晶屏开发经历篇(一):选型迪文液晶屏
  8. 多目标建模算法PLE
  9. Java version history
  10. 1.1Android 5.1 - 7.1 系统(framework)定制、修改、移植、总结