文档章节

代理模式

maozhibin
 maozhibin
发布于 2017/08/04 16:02
字数 491
阅读 10
收藏 0

1.代理模式

代理(Proxy)是一种设计模式:为其他对象提供一种代理以控制这个对象的访问.

这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法

例子 : 就比如说.小明喜欢小红单他不敢自己去追,所以他就小东来代替他去给小红送礼物.这时候小东就是小明的代理,通过这个代理来个小红送东西.这时候小明自己就可以不用露面,解决了小明的尴尬.

代理模式有三种模式:分别是静态代理模式,动态代理模式,Cglib子类代理工厂.下面让我们一起来看看这三种不同的代理.

静态代理

    

静态代理总结:
1.可以做到在不修改目标对象的功能前提下,对目标功能扩展.
2.缺点:因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护.

动态代理: 

    

 

动态代理总结:
代理对象不需要实现接口,但是目标对象一定要实现接口,否则不能用动态代理

Cglib子类代理工程:

那当我们有些时候目标对象没有实现接口,我们这个时候应该怎么样用代理的.这时候我们可以用Cglib子类代理工厂

没有实现接口的目标对象

 

 


 

这就是Cglib子类代理工厂的实现,我们在使用的时候可以根据场景的实际情况进行选择使用.

在aop中也使用了代理模式,它使用的就是动态代理模式

© 著作权归作者所有

maozhibin

maozhibin

粉丝 0
博文 4
码字总数 1353
作品 0
杭州
私信 提问

暂无文章

Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
11分钟前
3
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
今天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
今天
4
0
轻量级 HTTP(s) 代理 TinyProxy

CentOS 下安装 TinyProxy yum install -y tinyproxy 启动、停止、重启 # 启动service tinyproxy start# 停止service tinyproxy stop# 重启service tinyproxy restart 相关配置 默认...

Anoyi
今天
0
0
Linux创建yum仓库

第一步、搞定自己的光盘 #创建文件夹 mkdir -p /media/cdrom #挂载光盘 mount /dev/cdrom /media/cdrom #编辑配置文件使其永久生效 vim /etc/fstab 第二步,编辑yun源 vim /ect yum.repos.d...

究极小怪兽zzz
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部